PowerShellで初めてスクリプト(.ps1ファイル)を実行したとき、真っ赤な文字で次のようなエラーが表示されることがあります。
このシステムではスクリプトの実行が無効になっているため、ファイル ○○.ps1 を読み込むことができません。
初めて見ると「スクリプトを間違えた?」「PowerShellが壊れている?」と焦ってしまいますが、実は正常な動作です。
Windowsの初期設定では、インターネットからダウンロードした悪意のあるプログラムを勝手に実行しないように、最も厳しい設定が適用されています。
そのため、パソコンの安全性を高めるためにPowerShellのスクリプト実行が制限されています。
この記事では、
- ExecutionPolicyとは何か
- エラーの原因
- 安全な解除方法
- おすすめの設定
- 元に戻す方法
まで初心者向けに分かりやすく解説します。
PowerShellのExecutionPolicyとは?
ExecutionPolicyとはスクリプト実行ルールのこと
ExecutionPolicy(実行ポリシー)とは、PowerShellでスクリプトを実行してよいかを制御する仕組みです。
ウイルスや悪意のあるスクリプトを誤って実行しないように、Windowsには最初から制限が設けられています。
つまり「PowerShellが使えない」のではなく「安全のためにスクリプトの実行を止めている」という状態です。
現在のExecutionPolicyを確認する方法
まずは現在の設定を確認しましょう。
PowerShellを開いて、次のコマンドを実行します。
Get-ExecutionPolicyPowershellの開き方などがわからないときは、次の記事を参考にしてください。

例えば、次のように表示されます。
PS C:\Users\User> Get-ExecutionPolicy
Restricted実行した結果「Restricted」と表示された場合、スクリプトの実行が禁止されている状態です。
なお、PowerShellには設定が適用される範囲(スコープ)が複数あります。
より詳しく確認したい場合は、次のコマンドを実行してみましょう。
実行することで、各スコープの実行ポリシーを確認することができます。
Get-ExecutionPolicy -List実行した結果です。
PS C:\Users\nscgb> Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Restricted
LocalMachine Undefined「CurrentUser(現在のユーザー)」や「LocalMachine(パソコン全体)」など、どの範囲にどのルールが適用されているかが一覧で分かります。
ExecutionPolicyの種類
PowerShellにはいくつかの実行ポリシーがあります。
| 設定 | 内容 |
| Restricted | スクリプトを実行できない(既定) |
| RemoteSigned | ローカルで作成したスクリプトは実行可能 |
| AllSigned | 署名済みスクリプトのみ実行可能 |
| Unrestricted | 警告は表示されるが実行できる |
| Bypass | 制限なし |
| Undefined | 未設定 |
初心者に最もおすすめなのはRemoteSignedです。
PowerShellのスクリプト実行禁止を解除する方法
私もPowerShellを使い始めたころは、毎回このエラーで止まっていました。
現在は以下の設定を使用しています。
実行すると、現在のログインしているユーザーにのみ「RemoteSigned」が設定されます。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser実行後には、次のコマンドで現在の実行ポリシーを表示し、設定されたか確認しましょう。
PS C:\Users\User> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
PS C:\Users\User> Get-ExecutionPolicy
RemoteSigned「RemoteSigned」と表示されれば設定完了です。
これで自分が作成したPowerShellスクリプト(.ps1ファイル)を実行できるようになります。
管理者権限が不要な設定
初心者の方に最もおすすめなのは、コマンドの末尾に次のオプションを付け加える方法です。
-Scope CurrentUser
先ほどのスクリプトの後ろの部分です。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUserCurrentUserは、現在ログインしているユーザーにだけ設定が適用されます。
パソコン全体の設定を変更しないため、管理者権限が不要で、会社のパソコンなどでも比較的安全に設定を変更できます。
パソコン全体へ設定する方法
現在ログインしているユーザーだけでなく、パソコンを使うユーザー全体の設定を変更する場合には、次のスクリプトを実行します。
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine実行すると次のようなエラーが表示されることがあります。
Set-ExecutionPolicy : レジストリ キー 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Power
Shell\1\ShellIds\Microsoft.PowerShell' へのアクセスが拒否されました。 既定 (LocalM
achine) のスコープの実行ポリシーを変更するには、[管理者として実行] オプションを
用して Windows PowerShell を起動してください。現在のユーザーの実行ポリシーを変更す
るには、"Set-ExecutionPolicy -Scope CurrentUser" を実行してください。
これは「Powershellを管理者権限で実行してください」という意味のエラーです。
管理者権限がある場合は、Powershellを「管理者として実行」してからコマンドを実行することで設定できます。
パソコン全体へ影響するため、初心者にはあまりおすすめしません。
一時的に実行する方法
「パソコンの設定を一切変更したくない」「今回だけ一時的にスクリプトを動かしたい」という場合は、適用範囲を「Process」に指定するのがおすすめです。
Set-ExecutionPolicy RemoteSigned -Scope Processこのコマンドを実行すると、現在開いているPowerShellの画面(プロセス)の中だけで一時的に実行が許可されます。
その画面を閉じれば自動的に元の安全な状態に戻るため、最も安全性が高い方法です。
実行ポリシーを元に戻す方法
元の状態へ戻したい場合は、次のコマンドを実行します。
Set-ExecutionPolicy RestrictedCurrentUserスコープだけを元に戻す場合は、次のコマンドを実行します。
Set-ExecutionPolicy Restricted -Scope CurrentUserExecutionPolicyを変更しても解決しないときの確認ポイント
管理者によって制限されている
会社のパソコンでは、グループポリシーによってExecutionPolicyが固定されていることがあります。
次のコマンドで確認できます。
Get-ExecutionPolicy -List表示される「MachinePolicy」や「UserPolicy」に値が入っている場合は、システム管理者によって設定されています。
この場合、自分では変更できません。
PowerShellを管理者として起動していない
パソコン全体の設定であるLocalMachineのポリシーを変更しようとすると、アクセス拒否のエラーになります。
この場合は、一度PowerShellの画面を閉じて、「PowerShellを管理者として実行」してPowerShellを起動する必要があります。
ただし、前述のとおり、初心者の方は管理者権限のいらない「-Scope CurrentUser」を使うのがおすすめです。
ExecutionPolicyを変更するメリット
- PowerShellスクリプトを実行できる
- 業務自動化ができる
- 定型作業を効率化できる
- バッチ処理や管理スクリプトを利用できる
PowerShellの便利さを活かすためには、ExecutionPolicyの理解は欠かせません。
作業の効率化にPowerShellはおすすめですが、AIも使って効率化してみましょう。

ExecutionPolicyを変更するデメリット
- 悪意あるスクリプトを実行してしまう可能性がある
- セキュリティリスクが増える
- ダウンロードしたスクリプトは内容確認が必要
そのため、BypassやUnrestrictedを常用することはおすすめしません。
普段はRemoteSignedを利用するのが安全です。
よくある質問(FAQ)
RemoteSignedとBypassはどちらがおすすめですか?
通常はRemoteSignedがおすすめです。
Bypassは制限がほぼ無くなるため、使うとしても一時的な利用だけにしましょう。
ExecutionPolicyを変更しても危険ではありませんか?
CurrentUserへRemoteSignedを設定する程度であれば、多くの個人利用では問題ありません。
ただし、知らないサイトからダウンロードしたスクリプトは内容を確認してから実行してください。
ExecutionPolicyを変更できません
会社のパソコンではグループポリシーで制限されている場合があります。
その場合はシステム管理者へ相談してください。
まとめ
PowerShellで「このシステムではスクリプトの実行が無効になっています」というエラーが表示されても、慌てる必要はありません。
ExecutionPolicyは、PowerShellの安全性を高めるための仕組みです。
初心者であれば、次のコマンドを実行して、ポリシーを「RemoteSigned」に設定するだけで、多くの場合は問題なくPowerShellスクリプトを実行できます。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUserまずは現在の設定を確認し、自分の用途に合ったExecutionPolicyへ変更してみましょう。

