Bar

PowerShellの基本 スクリプトの実行ポリシーを変更~ps1ファイル実行時のエラー

PowerShell スクリプトの実行ポリシーを忘れてしまう事が多いのでメモ。

PowerShell 実行ポリシーの変更手順

  1. 管理者権限でPowerShellを起動
  2. Get-ExecutionPolicy コマンドレットを実行し、現在の実行ポリシーを確認
    Restrictedの場合は次へ
  3. Set-ExecutionPolicy コマンドレットを実行し、任意の実行ポリシーへ変更
    例:>Set-ExecutionPolicy Remotesigned
  4. 変更確認が問われます。
    変更する場合は、[Enter]ボタン or [Y]ボタンを押す
2013-08-19_083701

4つの実行ポリシー

Restricted .ps1のスクリプトの実行は不可。
基本、対話モードでPowerShellを実行します。
AllSigned 信頼できる発行元が署名したスクリプトのみ実行できます。
RemoteSigned ローカルスクリプトは制限なく実行可能。
ファイルサーバ等に配置したスクリプトファイルを実行するには、AllSigned同様、発行元が署名したスクリプトしていなければなりません。
Unrestricted あらゆるPowerShell スクリプトを実行できます。

自己署名証明書の作成は、Visual Studio SDKのmakecertコマンドから行うそうです。
まだ試してませんが、セキュリティレベルを上げるため後日導入したいと思います。

管理者権限でPowerShellを起動するとどうなるか?

管理者権限なしでPowerShellを起動し、Set-ExecutionPolicy 小窓レットを実行するとエラーが表示され、変更が出来ません。
Set-ExecutionPolicy : レジストリ キー 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' へのアクセスが拒否されました。
2013-08-19_083806
上記レジストリを確認すると、実行ポリシーのデータが格納されていました。
管理者権限で実行する理由はこれなんですね。
2013-10-10_082700
Set-ExecutionPolicyを実行する場合は、必ず「管理者権限のPowerShellを起動」する事が大切です。
image
image