PowerShellでスクリプト(.ps1ファイル)を実行しようとして、こんなエラーに遭遇したことはありませんか?
ファイル script.ps1 を読み込めません。このシステムでは
スクリプトの実行が無効になっているためです。
または
execution of scripts is disabled on this system.
これは、PowerShellの実行ポリシーによってスクリプトの実行が制限されているためです。
よくある場面
- 便利なPowerShellスクリプトをダウンロードして実行したい
- 自分で作ったスクリプトが動かない
- 業務で使うスクリプトが実行できない
この問題を解決するのが、Set-ExecutionPolicyコマンドです。
この記事では、実行ポリシーの仕組みから安全な設定方法まで、初心者にもわかりやすく説明します。
実行ポリシー(Execution Policy)とは?

何のためにある?
PowerShellの実行ポリシーは、スクリプトの実行を制御するセキュリティ機能です。
目的
- 悪意のあるスクリプトの実行を防ぐ
- ウイルスやマルウェアからシステムを保護
- 不用意なスクリプト実行によるトラブルを防止
重要なポイント
- デフォルトではスクリプト実行が無効
- コマンドは問題なく実行可能
- ユーザーが意図的に設定を変更する必要がある
Set-ExecutionPolicyとは?
Set-ExecutionPolicyは、この実行ポリシーを変更するためのPowerShellコマンドです。
基本構文
Set-ExecutionPolicy [ポリシー名] [-Scope スコープ] [-Force]
実行ポリシーの種類
6つのポリシー一覧
ポリシー名 | セキュリティレベル | 内容 | 使用場面 |
---|---|---|---|
Restricted | ????? | すべてのスクリプト実行不可 | デフォルト設定 |
AllSigned | ???? | 署名付きスクリプトのみ実行可 | 企業環境 |
RemoteSigned | ??? | ダウンロードしたスクリプトは署名必須 | 推奨設定 |
Unrestricted | ?? | すべて実行可(警告あり) | 開発環境 |
Bypass | ? | 制限なし(警告なし) | 特殊用途 |
Undefined | – | 設定なし(上位スコープに従う) | 初期状態 |
各ポリシーの詳細
Restricted(制限)
- すべてのスクリプトファイル(.ps1)が実行不可
- PowerShellコマンドは実行可能
- Windowsのデフォルト設定
AllSigned(すべて署名済み)
- デジタル署名されたスクリプトのみ実行可能
- 署名の発行者を信頼するかユーザーに確認
- 企業環境で推奨
RemoteSigned(リモート署名済み)
- ローカルで作成したスクリプトは実行可能
- インターネットからダウンロードしたスクリプトは署名が必要
- 個人利用に最適
Unrestricted(制限なし)
- すべてのスクリプトが実行可能
- ダウンロードしたスクリプトは警告が表示される
- 開発やテスト環境向け
Bypass(バイパス)
- 警告も制限もなし
- 完全に無制限
- 特殊な用途のみ
現在の設定を確認する方法

基本的な確認
現在の実行ポリシーを確認
Get-ExecutionPolicy
実行結果(例)
Restricted
詳細な確認
すべてのスコープの設定を確認
Get-ExecutionPolicy -List
実行結果(例)
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Restricted
スコープの説明
- MachinePolicy:ドメインのグループポリシー(コンピューター)
- UserPolicy:ドメインのグループポリシー(ユーザー)
- Process:現在のPowerShellプロセスのみ
- CurrentUser:現在のユーザーのみ
- LocalMachine:コンピューター全体
安全な設定方法
推奨設定(個人ユーザー向け)
最も安全でバランスの良い設定
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
この設定の効果
- ✅ 自分で作ったスクリプトは実行可能
- ✅ ダウンロードしたスクリプトは署名チェック
- ✅ 他のユーザーに影響しない
- ✅ 管理者権限が不要
設定手順(詳細)
ステップ1:PowerShellを起動
- スタートメニューで「PowerShell」と検索
- 「Windows PowerShell」をクリック
ステップ2:現在の設定を確認
Get-ExecutionPolicy
ステップ3:設定を変更
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
ステップ4:確認メッセージに対応
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。
実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピック
(https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。
実行ポリシーを変更しますか?
[Y] はい(Y) [A] すべてはい(A) [N] いいえ(N) [L] すべていいえ(L) [S] 中断(S) [?] ヘルプ (既定値は "N"):
「Y」と入力してEnter
ステップ5:設定完了の確認
Get-ExecutionPolicy
実行結果
RemoteSigned
強制的に設定する方法
確認メッセージをスキップ
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
注意 -Force
パラメータは確認を省略しますが、設定内容をよく理解してから使用してください。
他の設定パターン
システム全体に設定(管理者向け)
前提条件
- PowerShellを管理者として実行
- システム全体に影響
コマンド
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
管理者でPowerShellを起動する方法
- スタートメニューで「PowerShell」と検索
- 「Windows PowerShell」を右クリック
- 「管理者として実行」をクリック
現在のセッションのみ変更
一時的な設定
Set-ExecutionPolicy Bypass -Scope Process
特徴
- PowerShellを閉じると設定がリセット
- 他のPowerShellウィンドウには影響しない
- テスト用途に最適
開発環境向け設定
すべて実行可能(警告あり)
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
注意 この設定は便利ですが、セキュリティリスクが高くなります。
実際にスクリプトを実行してみる
テスト用スクリプトの作成
ステップ1:メモ帳でスクリプト作成
Write-Host "Hello, PowerShell!"
Get-Date
ステップ2:test.ps1として保存
ステップ3:PowerShellで実行
.\test.ps1
成功した場合の出力
Hello, PowerShell!
2024年6月4日 14:30:25
ダウンロードしたスクリプトの実行
注意 インターネットからダウンロードしたスクリプトは「ブロック」される場合があります。
ブロック解除方法
Unblock-File .\downloaded_script.ps1
または、ファイルのプロパティから
- ファイルを右クリック → プロパティ
- 「ブロックの解除」にチェック
- OK をクリック
セキュリティ上の注意点

基本的な安全対策
信頼できるスクリプトのみ実行
- 作成者が明確
- 内容を理解している
- 公式サイトからダウンロード
スクリプト実行前の確認事項
- 内容をテキストエディタで確認
- 何をするスクリプトか理解
- 必要以上の権限を要求していないか
- 不審なネットワーク通信がないか
危険な設定
避けるべき設定
# ❌ 危険:制限なし
Set-ExecutionPolicy Bypass -Scope LocalMachine
# ❌ 危険:システム全体で制限なし
Set-ExecutionPolicy Unrestricted -Scope LocalMachine
使用後は設定を戻す
高いセキュリティが必要な場合
# スクリプト実行後に制限に戻す
Set-ExecutionPolicy Restricted -Scope CurrentUser
トラブルシューティング
よくあるエラーと対処法
エラー1:管理者権限が必要
Set-ExecutionPolicy : レジストリ キー 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' へのアクセスが拒否されました。
対処法
# CurrentUserスコープを使用
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
エラー2:グループポリシーで制限
Set-ExecutionPolicy : Windows PowerShell 実行ポリシーをグループ ポリシーが上書きします。
対処法
- 企業環境では管理者に相談
- 個人PCではローカルグループポリシーを確認
エラー3:スクリプトがブロックされている
ファイル test.ps1 はインターネット経由でダウンロードされ、ブロックされている可能性があります。
対処法
Unblock-File .\test.ps1
設定が反映されない場合
確認手順
- 現在の設定を確認
Get-ExecutionPolicy -List
- 優先順位の理解
MachinePolicy > UserPolicy > Process > CurrentUser > LocalMachine
- 適切なスコープで設定
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
代替手段

PowerShell ISEでの実行
特徴
- 統合開発環境
- スクリプト作成・実行・デバッグが可能
- 実行ポリシーの影響を受ける
PowerShell Core(推奨)
特徴
- 新しいバージョンのPowerShell
- クロスプラットフォーム対応
- より柔軟なセキュリティ設定
インストール
- Microsoft Store から「PowerShell」をインストール
- または GitHub から最新版をダウンロード
まとめ
重要なポイント
基本設定(推奨)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
理由
- ✅ 個人使用に最適
- ✅ 管理者権限不要
- ✅ 他ユーザーに影響なし
- ✅ 適切なセキュリティレベル
設定の選び方
用途 | 推奨設定 | 理由 |
---|---|---|
個人学習・開発 | RemoteSigned + CurrentUser | バランスが良い |
企業環境 | AllSigned + LocalMachine | 高セキュリティ |
テスト環境 | Unrestricted + Process | 一時的で安全 |
本番環境 | Restricted または AllSigned | 最高レベルの安全性 |
セキュリティのベストプラクティス
基本原則
- 最小権限の原則:必要最小限の設定
- スクリプト内容の確認:実行前に必ず内容をチェック
- 定期的な見直し:設定の定期的な確認
- ログの監視:スクリプト実行の記録
日常的な注意
- 不明なスクリプトは実行しない
- 公式サイト以外からのダウンロードは慎重に
- 実行後は不要なら設定を戻す
コメント