Windows PowerShell でスクリプトを実行しようとすると「このシステムではスクリプトの実行が無効になっているため、ファイル (ファイル名) を読み込むことができません。」とエラーが発生します。この設定を変更してスクリプトを実行できるようにする方法を解説します。
Windows PowerShell ではデフォルト設定でスクリプトの実行が禁止されています。スクリプトを実行できるようにするには、実行ポリシー(ExecutionPolicy) を変更しスクリプトの実行を許可する必要があります。
目次
現在の実行ポリシーを確認
まずは現在の実行ポリシーの設定値を確認しましょう。
次のコマンドを実行します。
Get-ExecutionPolicy
デフォルトでは Restricted となっているはずです。
これはスクリプトの実行を禁止する設定のため、スクリプトを実行するためにはこの設定を変更する必要があります。
実行ポリシーを変更する方法
Windows PowerShell の実行ポリシーの設定値には次の4種類があります。
設定値 | 説明 |
---|---|
Restricted | スクリプトの実行禁止 |
AllSigned | 署名付きのスクリプトのみ実行できます。インターネットからダウンロードしたスクリプトは実行できません。 |
RemoteSigned | ローカルの著名なしスクリプトと、インターネットからダウンロードした署名付きのスクリプトのみ実行できます。 |
Unrestricted | すべてのスクリプトを実行できます。 |
実行ポリシーを変更するには Windows PowerShell で次のコマンドを実行します。
Set-ExecutionPolicy 任意の実行ポリシー
例えば実行ポリシーを RemoteSigned に変更したければ次のコマンドを実行します。
Set-ExecutionPolicy RemoteSigned
この方法で設定を変更すると、次に設定を変更するまで実行ポリシーの設定が保持されます。楽ではありますがその分セキュリティリスクが高くなります。また、管理者権限が必要となります。
一時的に実行ポリシーを変更するには次のように末尾に -Scope Process を記述します。
Set-ExecutionPolicy RemoteSigned -Scope Process
この方法は常時実行を許可するよりもセキュリティリスクが低いものの、 Windows PowerShell を起動する度に設定が必要です。こちらの方法では管理者権限は不要です。
PowerShell の起動時に自動的に実行ポリシーを設定する方法
起動引数を指定したWindows PowerShell のショートカットを作成し、起動引数を設定することで、PowerShell を起動した場合に実行ポリシーを自動的に設定することができます。
こちらも管理者権限は不要です。