PowerShellスクリプトの実行

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


このコマンドオプションではシステムの設定は変更されないため、管理者権限が無くても実行は可能です。