PowerShellでスクリプトを実行しようとした際、「このシステムではスクリプトの実行が無効になっているため…」というエラーが表示され、作業が止まった経験があります。最初は原因が分からず戸惑いましたが、実行ポリシーの設定を正しく変更するだけで数分で解決できました。
このような症状が発生した場合は現在の実行ポリシーを確認し、用途に応じて適切なスコープで変更することがポイントです。むやみに「無制限」にするのではなく、安全性を理解した上で設定すれば問題なく運用できます。
本記事では、エラー内容の意味から安全な変更方法まで順番に解説します。
PowerShell実行ポリシーとは何か
実行ポリシー(Execution Policy)とは、PowerShellでスクリプトの実行をどの程度許可するかを制御するセキュリティ機能です。ウイルスや悪意あるスクリプトの実行を防ぐ目的で設けられています。
実行ポリシーは「スクリプト実行を完全に禁止するもの」ではなく、あくまで安全確認の仕組みです。Windowsのセキュリティ境界ではありませんが、運用上は重要な設定です。
PowerShellを使い始めたばかりの方は、実行ポリシーだけでなく基本コマンドの理解も重要です。よく使うコマンドを用途別にまとめた以下の記事も参考にしてください。

よく表示されるエラーメッセージ
もっとも多いエラーは以下です。
「このシステムではスクリプトの実行が無効になっているため、ファイルを読み込むことができません。」
英語環境では以下のように表示されます。
「running scripts is disabled on this system」
このエラーは、現在の実行ポリシーが Restricted になっている場合に発生します。
現在の実行ポリシーを確認する方法
まずは現在の設定を確認します。
PowerShellを「管理者として実行」し、以下を入力します。
|
1 |
Get-ExecutionPolicy |
より詳細に確認したい場合は以下を実行します。
|
1 |
Get-ExecutionPolicy -List |

出力例は以下のようになります。
| スコープ | 実行ポリシー |
|---|---|
| MachinePolicy | Undefined |
| UserPolicy | Undefined |
| Process | Undefined |
| CurrentUser | Restricted |
| LocalMachine | Restricted |
このように、スコープごとに設定が異なる場合があります。
実行ポリシーの種類一覧
主な実行ポリシーは以下の通りです。
| ポリシー名 | 内容 |
|---|---|
| Restricted | すべてのスクリプト実行を禁止(既定値) |
| AllSigned | 署名付きスクリプトのみ実行可能 |
| RemoteSigned | ローカルは可、インターネット取得スクリプトは署名必要 |
| Unrestricted | すべて実行可能(警告あり) |
| Bypass | すべて実行可能(警告なし) |
| Undefined | 未設定 |
一般的な環境では RemoteSigned が推奨されます。
実行ポリシーを変更する方法
CurrentUserスコープで変更する方法(推奨)
管理者権限が不要で、安全性も高い方法です。
|
1 |
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser |
実行後に確認メッセージが表示されたら「Y」を入力します。
この方法なら、自分のユーザーアカウントにのみ適用されます。
LocalMachineスコープで変更する方法
PC全体に適用する場合は管理者権限が必要です。
|
1 |
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine |
複数ユーザーで利用する端末では慎重に設定してください。
一時的に実行ポリシーを変更する方法
一時的にだけ実行を許可したい場合は以下です。
|
1 |
Set-ExecutionPolicy Bypass -Scope Process |
PowerShellを閉じると元に戻ります。検証用途に適しています。
エラー解除の最短手順
もっとも多いケースの解除手順は以下です。
- PowerShellを管理者として起動
- Get-ExecutionPolicy -List で確認
- Set-ExecutionPolicy RemoteSigned -Scope CurrentUser を実行
- 再度スクリプトを実行
これで大半のエラーは解消します。
セキュリティ上の注意点
UnrestrictedやBypassを恒久的に設定するのは推奨されません。悪意あるスクリプトの実行リスクが高まります。
企業環境では、MachinePolicyやUserPolicyがグループポリシーで制御されている場合があります。その場合、手動変更はできません。
その際は以下を確認してください。
・gpedit.msc の設定
・ドメイン管理ポリシー
・セキュリティ担当部署への確認
よくある質問(Q & A)
- RemoteSignedとUnrestrictedの違いは何ですか?
-
RemoteSignedはインターネットから取得したスクリプトに署名を要求します。Unrestrictedは基本的にすべて実行可能です。安全性の観点からRemoteSignedが推奨されます。
- 実行ポリシーを変更してもエラーが消えません。
-
スコープが原因の可能性があります。Get-ExecutionPolicy -List でMachinePolicyやUserPolicyが設定されていないか確認してください。
- PowerShell 7でも同じですか?
-
基本的なコマンドは同じですが、PowerShell 7はWindows PowerShellとは別環境です。どちらを起動しているか確認してください。
まとめ
PowerShell実行ポリシーエラーは、設定を正しく変更すればすぐに解決できます。まず現在のポリシーを確認し、必要最小限のスコープでRemoteSignedへ変更するのが安全です。
安易にUnrestrictedへ変更せず、用途に応じた設定を選択することが重要です。エラーの意味を理解して対処すれば、今後同じ問題で止まることはありません。

