この記事で扱う内容
この記事では、スクリプトの実行が無効になっているエラーが発生し、PowerShellスクリプトが実行できないときの原因と対処法についてご紹介します。
想定読者
- PowerShellスクリプト実行時に以下のようなエラーが発生し、対処法が分からず困っている人
※「D:\PowerShellScript\Search-ExcelContentSimple.ps1」の部分は例です。実際は、実行に失敗したスクリプトファイルパスが表示されます。
D:\PowerShellScript\Search-ExcelContentSimple.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル D:\PowerShellScript\Search-ExcelContentSimple.ps1 を読み込むことができません。詳細については、「about_Execution_Polic
ies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ D:\PowerShellScript\Search-ExcelContentSimple.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
このシステムではスクリプトの実行が無効になっているため、ファイル D:\PowerShellScript\Search-ExcelContentSimple.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170)
を参照してください。
+ CategoryInfo : セキュリティ エラー: (: ) []、ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnauthorizedAccess
前提
前提知識・前提スキル
- Windows OS の基本操作ができる人
前提環境
- 使用PC
- OS が Windows 10または 11であること
- PowerShell 5.1がインストールされていること(Windows 10または11標準搭載)
古い環境でも、同様の方法で問題が解消される場合があります。
原因
PowerShellの「実行ポリシー」の設定が原因の可能性が高いです。
「実行ポリシー」とは、PowerShellスクリプトの実行を制御するWindowsのセキュリティ機能です。
Windows10または11における既定値は「Restricted」のため、スクリプトは実行できないようになっています。
PowerShellの実行ポリシーとは

PowerShellの実行ポリシーとそのスコープについて、簡単にご説明します。
PowerShell実行ポリシーについて
PowerShell実行ポリシーは、スクリプトの実行を制限するセキュリティ設定のこと。
以下の通り、7種類あります。
No | 実行ポリシー | 制限の概要 |
---|---|---|
1 | AllSigned | 署名されているスクリプトのみ実行可能。 |
2 | Bypass | すべてのスクリプトを制限なく実行可能。 警告も表示されない。 |
3 | Default | 既定の実行ポリシーを表す。Restricted。 |
4 | RemoteSigned | ローカルのスクリプトは自由に実行可能。しかし、リモートのスクリプト(例:インターネットからDLしたスクリプト)は署名が必要。 |
5 | Restricted | すべてのスクリプトが実行できない。 PowerShell での対話的なコマンド実行のみ使用可能。 |
6 | Undefined | 明示的な実行ポリシーの設定が存在しないことを表す。 すべてのスコープの実行ポリシーが「Undefined」の場合、「Restricted」になる。 |
7 | Unrestricted | すべてのスクリプトを実行可能。 ただし、リモートのスクリプト実行時には警告が表示される。 |
PowerShell実行ポリシーのスコープについて
PowerShell実行ポリシーのスコープは、その実行ポリシーを適用する範囲のこと。
以下の通り、5種類あります。
No | スコープ | 適用範囲の概要 |
---|---|---|
1 | MachinePolicy | コンピューターのすべてのユーザー。 グループポリシーで設定されるため、管理者のみ設定可能。 |
2 | UserPolicy | コンピューターの現在のユーザー。 グループポリシーで設定されるため、管理者のみ設定可能。 |
3 | Process | 現在のPowerShellセッション。 環境変数で設定されるため、一時的な設定。 PowerShellを閉じれば元に戻る。 テストや一時的なスクリプト実行に便利。 |
4 | CurrentUser | 現在のユーザー。 レジストリで設定されるため、PowerShell を閉じたり、コンピューターを再起動しても設定はそのまま保持される。 ユーザー単位なので管理しやすい。 |
5 | LocalMachine | コンピューターのすべてのユーザー。 レジストリで設定されるため、PowerShell を閉じたり、コンピューターを再起動しても設定はそのまま保持される。 設定するには管理者権限が必要。 |
PowerShell実行ポリシーとスコープの優先順位について
スコープの優先順位は、上から順番に優先順位が高いです。
- MachinePolicy
- UserPolicy
- Process
- CurrentUser
- LocalMachine
例:MachinePolicyやUserPolicyの実行ポリシーが有効な場合、ユーザーがProcess以下の実行ポリシーを設定しても、設定は無視される。
PowerShell実行ポリシーの確認方法

現在のスコープのPowerShell実行ポリシーを確認する
PowerShellで「Get-ExecutionPolicy」コマンドを実行する
コマンド例)
Get-ExecutionPolicy
コマンド実行結果例)
Restricted
参考画面キャプチャ)

すべてのスコープのPowerShell実行ポリシーを確認する
コマンド例)
Get-ExecutionPolicy -List
コマンド実行結果例)
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Restricted
LocalMachine Undefined
参考画面キャプチャ)

PowerShell実行ポリシーの設定方法

一時的にスクリプトを実行可能にする
現在のPowerShellセッション内で有効になります(閉じれば元に戻る)
コマンド例)
Set-ExecutionPolicy -Scope Process RemoteSigned
コマンド実行結果例)
(戻り値なし)
参考画面キャプチャ)

永続的にスクリプトを実行可能にする
現在のユーザー単位で設定が永続化します。
コマンド例)
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
コマンド実行結果例)
(戻り値なし)
参考画面キャプチャ)

PowerShell実行ポリシーのおすすめ設定
用途に応じて、セキュリティ的に必要最低限の許可を与える方針がおすすめです。
場面 | おすすめ設定 |
---|---|
一時的に自作スクリプトを動かしたい | Set-ExecutionPolicy -Scope Process RemoteSigned |
常に自作スクリプトを使う予定がある | Set-ExecutionPolicy -Scope CurrentUser RemoteSigned |
業務で使用する場合は、必ず現場のセキュリティポリシーやルールを確認しましょう。
セキュリティが厳しい場合は、必ずチームリーダーや上司など、責任者に使用可否を確認しましょう。