「ExecutionPolicy」タグアーカイブ

PowerShellスクリプトが権限エラーで実行できない!ExecutionPolicy設定で解決する方法

PowerShell でスクリプトを実行しようとすると
「このシステムではスクリプトは実行できません」
といった権限エラーが出ることがあります。

原因は ExecutionPolicy(実行ポリシー) の設定にあります。
この記事では、

  • Get-ExecutionPolicy -List で確認できる各項目の意味

  • 設定できる ExecutionPolicy の種類

  • 初心者でも安全にスクリプトを実行するための方法

を解説します。


Get-ExecutionPolicy -List で分かること

Get-ExecutionPolicy -List を実行すると、スコープごとの設定が一覧表示されます。

例:

各スコープの意味

  • MachinePolicy
    グループポリシーでコンピュータ全体に適用される設定。通常の環境では Undefined が多い。

  • UserPolicy
    グループポリシーでユーザー単位に適用される設定。これも Undefined が一般的。

  • Process
    現在の PowerShell プロセス(セッション)だけに適用される一時設定。
    終了するとリセットされる。

  • CurrentUser
    現在ログインしているユーザーだけに適用される設定。
    管理者権限なしで変更可能なので、初心者はここを設定するのが安全

  • LocalMachine
    コンピュータ全体に適用される設定。管理者権限が必要。


ExecutionPolicy の種類

設定できる実行ポリシーには以下の種類があります。

Policy概要署名の要否典型用途リスク度(1-5)推奨スコープ設定例(Set-ExecutionPolicy)補足
Restrictedスクリプト実行を全て禁止不要(そもそも実行不可)企業の厳格端末/検証用の完全遮断2LocalMachineSet-ExecutionPolicy Restricted -Scope LocalMachine既定値になりがち。学習/自動化には不向き
AllSigned信頼された発行元の署名付きのみ実行可必須(すべて)厳格な本番環境での運用3LocalMachine または CurrentUserSet-ExecutionPolicy AllSigned -Scope CurrentUser署名管理が前提。外部スクリプトの安全性担保
RemoteSignedローカル作成は実行可/インターネット由来は署名必須リモート(ダウンロード物)のみ必須一般的な開発/運用でのバランス設定2CurrentUser(推奨)Set-ExecutionPolicy RemoteSigned -Scope CurrentUser最も無難。管理者権限不要でユーザー単位に適用
Unrestricted全て実行可(初回に警告が出る場合あり)不要検証/一時的な作業で制限を緩めたい時4Process または CurrentUserSet-ExecutionPolicy Unrestricted -Scope Process恒常運用は非推奨。警告は出るが実行は可能
Bypassブロック/警告なしで全て実行不要自動化ジョブ/一時的に完全無視したい時5Process(強く推奨)Set-ExecutionPolicy Bypass -Scope Processセッション限定で使う。恒常設定は危険
Undefinedスコープに設定なし(上位スコープへ委譲)ポリシー未設定状態の表示1全スコープUndefinedの場合は実質Restrictedが有効になることが多い

 


安全に設定する方法

権限エラーを解決するには、スコープを指定して設定します。

現在のユーザーだけに設定する場合(推奨)

  • 管理者権限が不要

  • 他のユーザーやシステム全体には影響しない

  • ローカルで作ったスクリプトは実行可能

一時的に設定する場合(PowerShellを閉じるとリセット)


まとめ

  • ExecutionPolicy が原因で PowerShell スクリプトが実行できないことがある

  • Get-ExecutionPolicy -List でどのスコープに設定があるかを確認できる

  • 初心者は CurrentUser に RemoteSigned を設定するのが安全

  • 目的に応じて、Process(一時的)や LocalMachine(管理者権限が必要)も使える