PowerShellスクリプトを実行すると、
「このシステムではスクリプトの実行が無効になっているため、ファイル (スクリプトファイル) を読み込むことができません。…」のエラーメッセージが表示される現象の対処法を紹介します。
PowerShellのスクリプトを実行すると、以下のエラーメッセージが表示され、スクリプトを実行できません。
いくつかの原因はありますが、スクリプトを実行するためのポリシー設定がされていないため、発生する場合があります。
PowerShelのプロンプトで次のコマンドを実行します。
Get-ExecutionPolicy
コマンドを実行し、"Restricted" が表示された場合は、ポリシーによる原因の可能性が高いです。
以下の手順でPowerShellスクリプトの実行を許可できます。
PowerShellスクリプトのコマンドラインから次のコマンドを実行します。
Set-ExecutionPolicy RemoteSigned
なお、一度限りの実行の場合は、スコープを指定して以下のコマンドを利用してもよいです。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
正しく実行されると下図の画面となります。(何も表示されません。マシンの状況や設定によっては確認メッセージが表示される場合があります。)
再度、Get-ExecutionPolicy
コマンドを実行します。実行結果が"RemoteSigned"になれば、設定は変更できています。
PowerShellのスクリプトファイルを入力し、PowerShellスクリプトが実行できることを確認します。
-Scope
オプションに Porcess を指定し、このセッションのみの設定とすればポリシー設定の変更ができます。
-ExecutionPolicy
のポリシーの値は以下の値が設定できます。
ポリシーの値 | 意味 |
---|---|
AllSigned | すべてのスクリプトと構成ファイルが、ローカル コンピューターで記述されたスクリプトを含め、信頼できる発行元によって署名されている必要があります。 |
Bypass | 何もブロックされず、警告やプロンプトは表示されません。 |
Default | 既定の実行ポリシーを設定します。 |
RemoteSigned | インターネットからダウンロードしたすべてのスクリプトと構成ファイルが、信頼できる発行元によって署名されている必要があります。 Windows Serverの場合の規定の実行ポリシー |
Restricted | Windows クライアント コンピューター向けの既定の実行ポリシー |
Undefined | スコープに対して実行ポリシーが設定されていません。 グループ ポリシーによって設定されていないスコープから、割り当てられた実行ポリシーを削除します。 |
Unrestricted | すべての構成ファイルを読み込んで、すべてのスクリプトを実行します。 インターネットからダウンロードされた署名されていないスクリプトを実行すると、実行前にアクセス許可の入力を求められます。 |
-Scope
の値は以下の値が設定できます。
Scopeの値 | 意味 |
---|---|
MachinePolicy | コンピューターのすべてのユーザーのグループ ポリシーに設定されます |
UserPolicy | コンピューターの現在のユーザーのグループ ポリシーに設定されます |
Process | 現在の PowerShell セッションにのみ影響します |
LocalMachine | コンピューターのすべてのユーザーに影響します (既定のスコープ) |
CurrentUser | 現在のユーザーにのみ影響します |