PowerShellでスクリプトを実行しようとしたとき、いきなり次のようなエラーに出くわしたことはありませんか?
「スクリプトの実行が無効になっているため、ファイルを読み込めません。」
このエラーの原因は、「実行ポリシー(Execution Policy)」にあります。
実行ポリシーとは、スクリプトの実行を制限するセキュリティ設定で、PowerShellではこれが非常に重要な役割を果たします。
本記事では、現在の実行ポリシーの確認方法を中心に、基本知識、ポリシーの種類、変更方法、注意点まで初心者にもわかりやすく解説します。
PowerShellの実行ポリシーとは?

実行ポリシーは、PowerShellが「どのようなスクリプトを許可するか」を制御する設定です。
セキュリティを保つために、既定ではスクリプト実行が制限されています。
マイクロソフトがこの仕組みを導入した理由は、悪意のあるスクリプトからユーザーを保護するためです。
実行ポリシーはファイアウォールのような役割を果たし、信頼できないスクリプトの実行を防ぎます。
実行ポリシーの種類一覧
ポリシー名 | 内容 | 使用シーン |
---|---|---|
Restricted | すべてのスクリプトをブロック(既定) | 高セキュリティ環境、スクリプト不要の環境 |
AllSigned | すべてのスクリプトに署名が必要 | 企業環境、高セキュリティ要件 |
RemoteSigned | インターネットから取得したスクリプトに署名が必要 | 一般的な業務環境(推奨) |
Unrestricted | すべてのスクリプトを実行可能(初回のみ警告表示) | 開発環境、テスト環境 |
Bypass | 完全に無制限。警告も表示されない | 自動化環境、CI/CD |
各ポリシーの詳細

Restricted
最も制限が厳しいポリシーです。
PowerShellコマンドは使用できますが、スクリプトファイル(.ps1)の実行はブロックされます。
多くのWindows環境では、これが既定値となっています。
AllSigned
信頼された発行元によって電子署名されたスクリプトのみを実行できます。
署名のないスクリプトや、信頼されていない発行元からのスクリプトは実行できません。
RemoteSigned
ローカルで作成したスクリプトは署名なしで実行できますが、インターネットからダウンロードしたスクリプトには信頼された署名が必要です。
バランスの取れた設定。
Unrestricted
すべてのスクリプトを実行できますが、インターネットからダウンロードしたスクリプトを実行する際は警告が表示されます。
Bypass
すべての制限をバイパスし、警告も表示されません。
自動化プロセスやCI/CD環境で使用されますが、セキュリティリスクが高いため通常の使用は推奨されません。
現在の実行ポリシーを確認する方法

単純に現在の設定を確認するには?
Get-ExecutionPolicy
このコマンドは、現在有効な(最も制限の厳しい)実行ポリシーを表示します。
各スコープ(ユーザー別など)のポリシーをすべて確認したいときは?
Get-ExecutionPolicy -List
出力例:
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine Restricted
→ 実際にどのスコープが優先されているかがひと目でわかります。
実行ポリシーのスコープについて
PowerShellの実行ポリシーは、異なるスコープ(範囲)で設定できます:
スコープ | 説明 | 優先度 |
---|---|---|
MachinePolicy | グループポリシーでコンピューター全体に設定 | 最高 |
UserPolicy | グループポリシーでユーザーに設定 | 2番目 |
Process | 現在のPowerShellセッションのみ | 3番目 |
CurrentUser | 現在のユーザーのみ | 4番目 |
LocalMachine | コンピューター上のすべてのユーザー | 最低 |
優先度の高いスコープでの設定が、低いスコープの設定よりも優先されます。
例えば、MachinePolicyが「Restricted」で、CurrentUserが「RemoteSigned」の場合、実際の動作は「Restricted」になります。
実行ポリシーを変更する方法

例:現在のユーザーのみRemoteSignedに設定
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
例:一時的(プロセス単位)に変更
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
例:コンピューター全体の設定を変更(管理者権限必要)
Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned
⚠ 注意!
- 管理者権限が必要なスコープ(例:LocalMachine)もあります。
- セキュリティリスクがあるため、UnrestrictedやBypassは慎重に使うようにしましょう。
- グループポリシーで設定された実行ポリシー(MachinePolicy, UserPolicy)は、
Set-ExecutionPolicy
で変更できません。
よくあるエラーと対処法
エラー:「実行ポリシーによりスクリプトの実行が無効になっています」
.\myscript.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル
C:\Scripts\myscript.ps1 を読み込めません。詳細については、「Get-Help about_Signing」を参照してください。
対処法:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
エラー:「アクセスが拒否されました」
Set-ExecutionPolicy : レジストリ キー 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' へのアクセスが拒否されました。
対処法:
- 管理者としてPowerShellを実行して再試行
- 管理者権限がない場合は、
-Scope CurrentUser
を使用する
スクリプトを1回だけ実行したい場合
powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\myscript.ps1"
このコマンドは、実行ポリシーを変更せずに、特定のスクリプトを1回だけバイパスして実行します。
実行ポリシーの活用シーン

スクリプトを使った業務自動化
# 日々の業務で使用する自作スクリプトを実行する場合
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
RemoteSignedを使えば、自分で作成したスクリプトは問題なく実行でき、外部から取得したスクリプトには署名が求められるため、バランスが良いです。
外部スクリプト(GitHubなど)の実行
GitHubなどからダウンロードしたスクリプトは、インターネットからの取得とみなされます。
これを実行するには:
- RemoteSignedポリシーの場合:署名が必要
- 代替手段として:ファイルのプロパティで「ブロックの解除」を行う
- または:一時的にポリシーを緩和する
# プロセス単位で一時的に緩和
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
社内ポリシーに応じたセキュリティ管理
企業環境では、グループポリシーを使って実行ポリシーを一元管理することが一般的です:
# 管理者としてグループポリシーエディタを開く
gpedit.msc
# ナビゲーション: コンピューターの構成 > 管理用テンプレート > Windows コンポーネント > Windows PowerShell
CI/CD環境での一時的なスクリプト実行
自動化パイプラインでは、コマンドラインから一時的にポリシーをバイパスする方法がよく使われます:
# CI/CDパイプラインでの使用例
powershell.exe -ExecutionPolicy Bypass -Command "& {./deploy-script.ps1}"
まとめ
PowerShellの実行ポリシーは、セキュリティと利便性のバランスを取るための仕組みです。
まずは、今の自分の環境がどうなっているかを「Get-ExecutionPolicy」で確認するところから始めましょう。
本記事のポイント:
Get-ExecutionPolicy
で現在の実行ポリシーを確認-List
でスコープごとの設定もチェックできるSet-ExecutionPolicy
で必要に応じて変更可能(慎重に!)- 一般的には
RemoteSigned
が推奨されるバランスの取れた設定 - 一時的な実行には
-ExecutionPolicy Bypass
オプションも活用できる - 実行ポリシーの理解はスクリプト実行の第一歩
実行ポリシーは、PowerShellを安全に使いこなすための重要な知識です。
セキュリティと使いやすさのバランスを考慮し、自分の環境に最適な設定を選びましょう。
コメント