[PowerShell]スクリプトを実行すると「このシステムではスクリプトの実行が無効になっているため、ファイル *スクリプトファイル名* を読み込むことができません。」エラーが発生する(旧版)

デフォルト設定ではスクリプトの実行が禁止になっているため、有効にする必要があります。

エラーの発生例

about_Execution_Policies
このシステムではスクリプトの実行が無効になっているため、ファイル *スクリプトファイル名* を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?Link
ID=135170) を参照してください。
    + CategoryInfo          : セキュリティ エラー: (: ) []、ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnauthorizedAccess
PS D:\>

解決方法

実行ポリシー(ExecutionPolicy) を変更し、スクリプトの実行を許可します。ExecutionPolicyは次の4種類あり、いくつか設定方法があります。

現在の設定値は次のコマンドで確認できます。

> Get-ExecutionPolicy
Restricted
実行ポリシーの種類(セキュリティリスクの低い順)
設定値 説明
Restricted すべてのスクリプトは実行できません。
AllSigned 信頼できる発行元によって署名されているスクリプトのみ実行できます。
RemoteSigned ローカルの著名なしスクリプトと、インターネットからダウンロードした署名付きのスクリプトが実行できます。
Unrestricted すべてのスクリプトを実行できますが、インターネットからダウンロードしたスクリプトは警告が表示されます。
Bypass すべてのスクリプトを実行できます。
Default 既定の実行ポリシーです。Windows の場合は Restricted、Windowsサーバー では RemoteSigned になります。また、Linux や macOS では Unrestricted です。

実行ポリシーの設定方法 その1 一時的にスクリプトを実行可能にする(管理者権限不要)

  1. Set-ExecutionPolicy コマンドで ExecutionPolicy を変更します。
    > Set-ExecutionPolicy RemoteSigned -Scope Process
    

    実行例 Set-ExecutionPolicy RemoteSigned -Scope Process

    > Set-ExecutionPolicy RemoteSigned -Scope Process
    
    実行ポリシーの変更
    実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
    のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
    で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
    [Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): y
    

    これでスクリプトが実行可能な状態になりました。

実行ポリシーの設定方法 その2 常にスクリプトを実行可能にする(管理者権限が必要)

  1. システム管理者権限で PowerShell を起動します。
  2. Set-ExecutionPolicy コマンドで ExecutionPolicy を変更します。
    > Set-ExecutionPolicy RemoteSigned
    
    Set-ExecutionPolicy RemoteSigned
    > Set-ExecutionPolicy RemoteSigned
    
    実行ポリシーの変更
    実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
    のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
    で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
    [Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): y
    
    これでスクリプトが実行可能な状態になりました。PowerShell を通常通り起動し直してからスクリプトを実行します。このままスクリプトを実行すると管理者権限で動作するため、危険です。

実行ポリシーの設定方法その3 PowerShell を起動するときに実行ポリシーを指定する(管理者権限不要)

PowerShell の起動引数で実行ポリシーの指定ができます。 PowerShell のショートカットを作成し、起動引数を指定しておくと便利です。

起動引数の指定方法

PowerShell.exe -ExecutionPolicy Unrestricted
PowerShellのショートカット

検証環境

関連ページ

改訂履歴