2011年2月24日

今日 PowerShell で困ったこと。 -> Set-ExecutionPolicy の x86 と x86_64

PowerShell スクリプトを書いてて、ps1 ファイルの実行で困った。


ps1 ファイルはダブルクリックでは実行できなくて
powershell コマンドの引数とかで実行してやる必要がある。


この時、デフォルトではスクリプトの実行が制限されていて、
Set-ExecutionPolicy を RemoteSigned などに変更する必要がある。


http://www.atmarkit.co.jp/fwin2k/win2ktips/1023ps1sec/ps1sec.html


しかし、いくら変えたところで一向に Restricted から変わらない。
もちろん、管理者権限で PowerShell を起動している。

64bit 環境の PowerShell では、x86 版(上)と x86_64 版(下)の 2 つの PowerShell が存在する。


Windows PowerShell (x86) -> %SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe
Windows PowerShell -> %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe


この時、それぞれの PowerShell で Set-ExecutionPolicy の値は共有されてなく、別々に保存されている。


環境がある場合、片方だけ変えてみると、もう片方が変わらないことが確かめられる。

なので、PowerShell スクリプトを動かしたい場合は、 
 x86 と x86_64 の両方で Set-ExecutionPolicy RemoteSigned してあげると幸せ☆

0 件のコメント: