PowerShell - 「このシステムではスクリプトの実行が無効になっているため、ファイルを読み込むことができません。」の対処方法

悪意のあるスクリプトの実行を防止するため、初期設定ではスクリプトの実行が禁止されています。解決するには実行ポリシー(ExecutionPolicy) を変更し、スクリプトの実行を許可します。

スクリプト実行エラーが発生している様子

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

原因と解決方法

PowerShell には、実行ポリシー (ExecutionPolicy) という安全機能が存在します。この機能は、ユーザーの誤操作や、悪意のあるスクリプトの実行を防ぐために、スクリプトの実行を制御します。

初期設定は OS によって異なり、Windows クライアントでは Restricted に設定されています。この設定では、スクリプトの実行が禁止されているため、スクリプトを実行しようとすると、エラーが発生します。

実行ポリシーの設定値を Restricted 以外に変更することで、スクリプトの実行が可能になります。

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

実行ポリシーの確認方法

PowerShell で次のコマンドを実行すると、現在の実行ポリシーが表示されます。
Get-ExecutionPolicy

実行ポリシーの設定方法

Set-ExecutionPolicy コマンドを使用し、実行ポリシー(ExecutionPolicy) を変更します。また、実行ポリシーは PowerShell 起動時のコマンドライン引数でも指定できます。

一時的にスクリプトを実行可能にする(管理者権限不要)

  1. PowerShell を 起動し、次のコマンドを実行します。

    ※Unrestricted の部分は 表「実行ポリシーの種類」を参考に、適切なポリシーを指定します。

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

常にスクリプトを実行可能にする(管理者権限が必要)

  1. システム管理者権限で PowerShell を起動します。
  2. 次のコマンドを実行します。

    ※Unrestricted の部分は 表「実行ポリシーの種類」を参考に、適切なポリシーを指定します。

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

PowerShell の起動時に実行ポリシーを指定する(管理者権限不要)

PowerShell の起動引数 -ExecutionPolicy で実行ポリシーの指定ができます。

コマンドプロンプトから起動

  1. コマンドプロンプトを起動します。
  2. 次のコマンドを実行します。

    ※Unrestricted の部分は 表「実行ポリシーの種類」を参考に、適切なポリシーを指定します。

    PowerShell.exe -ExecutionPolicy Unrestricted
    
  3. スクリプトが実行可能な状態で PowerShell が起動します。

ショートカットから起動

  1. PowerShellのショートカットを作成します。
  2. ショートカット の プロパティを表示し、リンク先欄に 起動引数を追加します。

    ※Unrestricted の部分は 表「実行ポリシーの種類」を参考に、適切なポリシーを指定します。

    -ExecutionPolicy Unrestricted
    
    イメージ
    PowerShellのショートカット

参考資料

検証環境

関連ページ

改訂履歴