OSをインストールした直後の状態では、PowerShellスクリプトの実行は制限されています。
スクリプトを実行すると、
「このシステムではスクリプトの実行が無効になっているため、ファイル C:\xxxx\xxxx.ps1 を読み込むことができません。
のようにエラーメッセージが表示され、スクリプトを実行することができません。
これは、スクリプトの実行が制限されているためです。
PowerShellスクリプトの実行制限の変更コマンド
現在のスクリプトの実行制限状態を確認するにはPowerShellを起動し、以下のコマンドを実行します。
Get-ExecutionPolicy
以下の値のいずれかが表示されます。
値 |
説明 |
Restricted |
すべてのPowerShellスクリプト実行が制限された状態。 |
AllSigned
| 署名されたPowerShellスクリプトのみ実行可能な状態。 |
RemoteSigned
| ローカル(PC内)に存在するPowerShellスクリプトは実行可能。 ローカル(PC内)に存在しない場合は署名されたPowerShellスクリプトのみ実行可能な状態。 |
Unrestricted
| ローカル(PC内)に存在するPowerShellスクリプトは実行可能。 ローカル(PC内)に存在しない場合は署名されたPowerShellスクリプトのみ実行可能な状態。 |
Bypass
| すべてのPowerShellスクリプトが実行可能。 |
現在のスクリプトの実行制限状態を変更するには管理者として起動したPowerShellから以下のコマンドを実行します。
Set-ExecutionPolicy Bypass
※管理者権限が必要です。
上記コマンドでは、Bypassを指定することで、すべてのPowerShellスクリプトが実行可能となります。
RemoteSignedなど目的にあったオプションを指定してください。
設定値は以下のレジストリに格納される様子。
HKEY |
HKEY_LOCAL_MACHINE |
キー
| SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell |
値名
| ExecutionPolicy |
種別
| REG_SZ |
値
| Bypass |
PowerShellスクリプトの実行制限を回避した実行
cmd.exeからPowerShell.exeをコマンドライン引数付きで実行することでスクリプトの実行制限を回避して実行できます。
PowerShell.exe -ExecutionPolicy RemoteSigned .\xxxx.ps1
このコマンドオプションではシステムの設定は変更されないため、管理者権限が無くても実行は可能です。