事象
Powershellを実行すると下記の様なエラーになる。
PS C:\Users\user> .\hoge.ps1 .\hoge.ps1: File C:\Users\user\hoge.ps1 cannot be loaded. The file C:\Users\user\hoge.ps1 is not digitally signed. You cannot run this script on the current system. For more information about running scripts and setting execution policy, see about_Execution_Policies at https://go.microsoft.com/fwlink/?LinkID=135170.
なお、ポリシーはRemoteSignedに設定変更している。
原因
未署名の外部スクリプト(※1)を実行しようとしていたから。
※1 外部スクリプト
インターネットや外部ネットワークからダウンロードされ、
代替データストリームに Zone.Identifier(ZoneId=3など)が付与されているファイルのこと。
対応方法
以下のどちらか(※2)で実行可能になる。
- Zone.Identifierを削除する
- スコープをUnrestrictedやBypassなどにする(※3)
※2 場合によっては、署名付きファイルをもらうという手もあるかもしれない。
※3 セキュリティを弱くするため、あまり好ましくはない。
Zone.Identifierの確認方法と削除方法
## 確認方法 # ファイルのすべてのデータストリームを出力 Get-Item .\hoge.ps1 -Stream * # Zone.Identifierだけ指定(無い場合はエラー) Get-Content .\hoge.ps1 -Stream Zone.Identifier ## 削除方法 # Zone.Identifier削除専用コマンド Unblock-File -Path .\hoge.ps1 # ストリーム削除コマンド Remove-Item -Path .\hoge.ps1 -Stream Zone.Identifier ## 複数削除方法 # カレントディレクトリ配下のすべての .ps1 ファイルのZone.Identifierを解除 Get-ChildItem -Filter *.ps1 | Unblock-File # サブフォルダーも含めてすべてのファイルのZone.Identifierを再帰的に解除 Get-ChildItem -Recurse | Unblock-File
スコープ確認方法・変更方法
## 確認方法 # 現在適応されているポリシーの確認 Get-ExecutionPolicy # 全スコープ一覧 Get-ExecutionPolicy -List ## 変更方法(管理者権限があるコンソールで実行する必要有) Set-ExecutionPolicy -Scope <スコープ名> -ExecutionPolicy <ポリシー名>
実行ポリシーとスコープ名
スコープ名一覧
| 優先度 | スコープ名 | 適用範囲・特徴 |
|---|---|---|
| 1 (最優先) | MachinePolicy |
グループポリシー(GPO)によってPC全体に強制される。一般ユーザーや個別のスクリプトからは変更不可。 |
| 2 | UserPolicy |
グループポリシー(GPO)によって現在のログインユーザーに強制される。変更不可。 |
| 3 | Process |
現在のPowerShellプロセス(セッション・タブ)内のみに適用される。ウィンドウを閉じると設定は消滅する。 |
| 4 | CurrentUser |
現在のログインユーザー全体に適用される。設定はレジストリ(HKCU)に保存され、次回起動時も維持される。 |
| 5 (最底辺) | LocalMachine |
PC全体(すべてのユーザー)に適用されるデフォルトの保存先。設定の変更には管理者権限が必要。 |
実行ポリシー名一覧
| 実行ポリシー名 | 実質的な権限・挙動 | 外部スクリプトの実行可否 |
|---|---|---|
Restricted |
すべてのスクリプトの実行を禁止。 インタラクティブな個別コマンドの入力のみを許可する(Windows クライアントOSの既定値)。 | ✕ 不可 |
AllSigned |
署名付きスクリプトのみ許可。 ローカル作成・外部ダウンロード問わず、信頼された発行元のデジタル署名が必要。 | ◯ 許可(要署名) |
RemoteSigned |
ローカル作成は許可、外部ダウンロードは要署名。 ネットから取得したファイル(ZoneId=3)を実行する場合はデジタル署名が必要(Windows Serverの既定値)。 |
◯ 許可(要署名) |
Unrestricted |
すべてのスクリプトを実行許可。 ただし、インターネットからダウンロードした未署名のスクリプトを実行する際には、事前の警告プロンプトが表示される。 | ◯ 許可(警告有) |
Bypass |
すべてのスクリプトを実行許可(警告なし)。 警告やブロックが一切発生しないため、自動化タスクやバックグラウンド処理で広く使われる。 | ◯ 許可 |
Undefined |
この階層(スコープ)での設定は「未定義(空)」であることを示す。 固有の権限は持たず、判断を下位スコープやOSのデフォルト値に委ねる。(※4) | —(委ねる) |
※4
デフォルト値は、サーバーにより異なる。
- Windows10/11:Restricted
- Windows Server系:RemoteSigned
コマンドで確認する場合、全てUndefiend設定後Get-ExecutionPolicyを実行すれば確認できる。

















![Software Design (ソフトウェアデザイン) 2025年12月号 [雑誌] Software Design (ソフトウェアデザイン) 2025年12月号 [雑誌]](https://m.media-amazon.com/images/I/51OG+wAthrL._SL500_.jpg)




![Software Design (ソフトウェアデザイン) 2026年5月号 [雑誌] Software Design (ソフトウェアデザイン) 2026年5月号 [雑誌]](https://m.media-amazon.com/images/I/512FFqQe8PL._SL500_.jpg)


