2010/02/13

PowerShellのスクリプト実行が拒否される問題を解決

PowerShell でスクリプトを実行しようとしたら,実行できず,次のようなメッセージが表示された.
PS C:\Users\tetsuo> .\hello.ps1
ファイル C:\Users\tetsuo\hello.ps1 を読み込めません。ファイル C:\Users\tetsuo\hello.ps1 はデジタル署名されていません。
このスクリプトはシステムで実行されません。詳細については、「get-help about_signing」と入力してヘルプを参照してください
。。
発生場所 行:1 文字:12
+ .\hello.ps1 <<<<
    + CategoryInfo          : NotSpecified: (:) []、PSSecurityException
    + FullyQualifiedErrorId : RuntimeException
で,調べたら,Set-ExecutionPolicy を使って,実行制約を緩めてやらないといけないらしい.しかし,また失敗.
PS C:\Users\tetsuo> Set-ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピックで説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): y
Set-ExecutionPolicy : レジストリ キー 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
' へのアクセスが拒否されました。
発生場所 行:1 文字:20
+ Set-ExecutionPolicy <<<<  RemoteSigned
    + CategoryInfo          : NotSpecified: (:) [Set-ExecutionPolicy]、UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
さらに調べると,Set-ExecutionPolicyを動かすためには,PowerShellを管理者権限で実行しなければならないということがわかった.管理者権限で動かしたPowerShellでSet-ExecutionPolicyを実行すると,うまくいった.

1 件のコメント:

kim99 さんのコメント...

Win Svr 2008 R2 で同じ問題で1時間位悩まされました。このBlogで解決でき助かりました。