PowerShellで実行ポリシーを変更する

284
NO IMAGE

Vue.jsを使った開発をすることがあり、その取り掛かりで環境を準備しているときに起きた問題の備忘録。

発生した問題

Visual Studio Codeを使ってプロジェクトを作成しようとしたところ、次の問題が発生した。

対応方法

PowerShell実行ポリシーの設定を変更する。

  1. 管理者権限でWindows PowerShellを起動する
  2. 現在の設定を確認する
    > Get-ExecutionPolicy

    RestrictedやUndefinedになっているはず

  3. ポリシーの設定を変更する
    > Set-ExecutionPolicy RemoteSigned

実行ポリシーの設定値

ポリシー 説明
Restricted 全てのスクリプトが制限される。
AllSigned 全ての署名付きスクリプトのみ実行可能。署名がないものは実行不可。
RemoteSigned ローカルのファイルは実行可能。インターネットからダウンロードした外部のスクリプトは署名が必要。
Unrestricted 全てのスクリプトが実行可能。ただし、インターネットからダウンロードしたファイルは実行時、確認される。
Default デフォルトのポリシーを設定する。Windowsクライアントでは"Restricted"、Windows Serverでは"RemoteSigned"
Bypass 警告や確認なしに、すべてのファイルが実行可能。
Undefined 現在のスコープから現在割り当てられている実行ポリシーを削除する。

実行ポリシーのスコープ

特定のスコープでのみ有効な実行ポリシーを設定することが可能。
設定する場合は、"Scope"オプションを指定する。(デフォルトは "LocalMachine")

> Set-ExecutionPolicy RemoteSigned -Scope Process
スコープ 説明
Process 実行ポリシーは現在のWindows PowerShellプロセスにのみ影響する。
CurrentUser 実行ポリシーは現在のユーザーのみに影響する。
LocalMachine 実行ポリシーは現在のコンピューター上のすべてのユーザーに影響する。

実行ポリシーの設定値の保存先

スコープ 保存先
Process 環境変数
PSExecutionPolicyPreference
(PowerShellプロセスが終了すると、変数と値が削除される)
CurrentUser レジストリ
HEKY_CURRENT_USER:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell のExecutionPolicy
LocalMachine レジストリ
HKEY_LOCAL_MACHINE:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell のExecutionPolicy