PowerShellで「このシステムではスクリプトの実行が無効になっているため」と表示された場合は、まずGet-ExecutionPolicy -Listで現在の設定を確認します。
個人PCで自分のユーザーだけスクリプトを実行したい場合はCurrentUserスコープをRemoteSignedに変更する方法があります。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUserただ、会社のPCではグループポリシーで管理されている場合があるので、勝手に変更せずMachinePolicyやUserPolicyの設定も確認してください。
OS:Windows 11 Home 25H2
PowerShell:7.4.2
この記事でわかること
- 実行ポリシーとは何か、なぜ制限されているのか。
- Restricted / RemoteSigned / Unrestricted など各ポリシーの違い。
- 現在の設定を確認する
Get-ExecutionPolicyの使い方。 Set-ExecutionPolicyでポリシーを変更する方法。- スコープ(CurrentUser / LocalMachine)の使い分け。
- 「スクリプトの実行が無効になっているため~」エラーの解決方法。
- 個人PC・業務PCそれぞれの推奨設定。
現在の実行ポリシーを確認する方法
Get-ExecutionPolicyの使い方
現在の実行ポリシーはGet-ExecutionPolicyで確認できます。
Get-ExecutionPolicy実行すると現在のポリシー名が1行で返ってきます。
Restrictedこの場合はスクリプトの実行がブロックされている状態です。
スコープ別に確認する方法
実行ポリシーにはスコープ(適用範囲)という概念があります。スコープごとに異なるポリシーを設定でき、優先度の高いスコープが優先して適用されます。
-Listオプションを使うと全スコープの設定を一覧で確認できます。
Get-ExecutionPolicy -List Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine Restricted上から順に優先度が高く、最初に値が設定されているスコープのポリシーが適用されます。この例ではCurrentUserにRemoteSignedが設定されているため、現在の実行ポリシーはRemoteSignedと判断できるわけですね。
なおMachinePolicyとUserPolicyはグループポリシーから設定されるスコープです。ここに値が入っている場合、個人での変更は上書きされてしまいます。業務PCで変更が反映されないときは要チェックです。
実行ポリシーを変更する方法
Set-ExecutionPolicyの基本的な使い方
ポリシーを変更するにはSet-ExecutionPolicyを使います。
Set-ExecutionPolicy <ポリシー名> -Scope <スコープ>例:CurrentUserをRemoteSignedに変更する場合
Set-ExecutionPolicy RemoteSigned -Scope CurrentUserスコープ(CurrentUser / LocalMachine)の違いと使い分け
-Scopeオプションでどの範囲にポリシーを適用するか指定できます。-Scopeを省略した場合はLocalMachine扱いになります。
| スコープ名 | 適用範囲 | 管理者権限 |
|---|---|---|
| LocalMachine | そのPCにログインするすべてのユーザー | 必要 |
| CurrentUser | 現在ログインしているユーザーのみ | 不要 |
| Process | 現在起動中のPowerShellセッションのみ | 不要 |
自分のPC環境でスクリプトを動かしたいだけならCurrentUserでよいと思います。
管理者権限が必要なケースとは
LocalMachineスコープへの変更は管理者権限が必要です。一般ユーザーで実行すると以下のエラーが出ます。
Set-ExecutionPolicy: Access to the path 'C:\Program Files\PowerShell\7\powershell.config.json' is denied.
To change the execution policy for the default (LocalMachine) scope, start PowerShell with the "Run as administrator" option.
To change the execution policy for the current user, run "Set-ExecutionPolicy -Scope CurrentUser".この場合はPowerShellを管理者として実行してから再度コマンドを試してみてください。
⚠️ 注意
LocalMachineの設定はPC全体に影響します。業務環境では変更前にIT管理者への確認をおすすめします。
PowerShellをどのフォルダーで開くか迷ったときは以下の記事も参考にしてみてください。作業対象フォルダーで直接起動する3つの方法を紹介しています。

PowerShellの実行ポリシーとは?
なぜスクリプトの実行が制限されているのか
実行ポリシーとはPowerShellがスクリプト(.ps1ファイル)を実行するときのルールを定める仕組みです。
Windowsではデフォルトでスクリプトの実行が制限されています。悪意のあるスクリプトが意図せず実行されてしまうのを防ぐためのセキュリティ上の配慮ですね。
「ps1ファイルを実行したい」という場面でこの制限に引っかかるわけです。
補足 実行ポリシーはあくまでも「うっかり実行してしまう」のを防ぐ仕組みです。悪意のある攻撃者を完全に防ぐセキュリティ機能ではない点はMicrosoft公式でも明記されています。
実行ポリシーの種類と意味
ポリシーには以下の種類があります。
| ポリシー名 | 動作概要 |
|---|---|
| Restricted | すべてのスクリプトの実行をブロック。PowerShellのデフォルト設定。 |
| AllSigned | 信頼された発行元によって署名されたスクリプトのみ実行可能(ローカルスクリプトも署名必須)。 |
| RemoteSigned | ローカルスクリプトは実行可能。インターネットから取得したスクリプトは署名が必要。 |
| Unrestricted | すべてのスクリプトを実行可能。ただしインターネット由来のスクリプトには警告が表示される。 |
| Bypass | 制限なし・警告なしでスクリプトを実行可能。主に自動化やCI/CD用途。セキュリティリスクが高いため通常利用では非推奨。 |
| Undefined | ポリシー未設定。上位スコープ(Machine/Userなど)の設定が適用される。 |
日常的な用途ではRemoteSignedが使い勝手とセキュリティのバランスがよく、推奨されることが多いです。
実行ポリシー比較
重要なポリシーのRestricted / RemoteSigned / Unrestrictedの違いをより詳しくまとめると下記のとおりです。
| 項目 | Restricted | RemoteSigned | Unrestricted |
|---|---|---|---|
| スクリプト実行 | ❌ 不可 | ⭕ 可 | ⭕ 可 |
| ローカルスクリプト | ❌ 実行不可 | ⭕ 実行可 | ⭕ 実行可 |
| ダウンロードスクリプト | ❌ 実行不可 | ⭕ 署名が必要 | ⭕ 実行可(警告あり) |
| セキュリティレベル | 🔒 最も高い | 🔒 中 | ⚠️ 低 |
| 初心者おすすめ度 | △(厳しすぎる) | ◎(最もバランス良い) | △(リスクあり) |
| 主な用途 | 制限された環境 | 開発・通常利用 | テスト・検証 |
迷った場合は「ローカルで作成したスクリプトを実行可能」「インターネット由来のスクリプトには追加の制限がかかる」RemoteSignedが比較的扱いやすい設定です。
実行ポリシーのセキュリティリスク
PowerShellの実行ポリシーはセキュリティ機能の一部ですが完全な防御ではありません。
設定によっては悪意のあるスクリプトが実行されるリスクがあります。
なぜ危険なのか
- スクリプトはファイル操作・レジストリ操作・ネットワーク通信が可能。
- マルウェアがPowerShellを利用するケースがある。
- 実行ポリシーはユーザーの誤操作で簡単に変更できる。
特に注意すべきポリシー
- Bypass
→ 制限も警告もなし(最も危険) - Unrestricted
→ 実行できてしまう(警告だけでは防げない)
よくあるリスクパターン
- ネットからDLしたスクリプトをそのまま実行する。
- 実行ポリシーを一時的に緩めて戻し忘れる。
- 意味を理解せず
Set-ExecutionPolicyを実行。
実行ポリシーは“セキュリティ機能ではない”
PowerShellの実行ポリシーは、厳密にはセキュリティ機能ではなくユーザーの誤操作を防ぐための安全装置です。
そのため、以下のような特徴があります。
- 強制力は弱い(回避可能)
- 管理者権限があれば変更できる
- マルウェア対策としては不十分
つまり実行ポリシーだけで安全になるわけではないです。
実行ポリシーの変更は用途に応じて方法を使い分けることが重要です
- 検証環境
→Processスコープで一時的に変更する。(PowerShell終了で自動的に元に戻る) - CI/CDや自動化
→実行時オプションでBypassを指定して実行する。(設定自体は変更しない)
よくあるエラーと対処法
「このシステムではスクリプトの実行が無効になっているため~」
このエラーは実行ポリシーがRestrictedになっているときに発生します。自分のPC環境であれば以下の手順で解決できます。
Get-ExecutionPolicy -List Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RestrictedSet-ExecutionPolicy RemoteSigned -Scope CurrentUserGet-ExecutionPolicyRemoteSignedRemoteSignedと表示されれば設定完了です。スクリプトを再実行してみてください。
これでPowerShellの実行ポリシーによるエラーは解決できます。実務ではここからスクリプトを活用していくことが重要です。
PowerShellを使った自動化や定期実行については以下の記事で詳しく解説しています。

変更しても反映されない場合
設定を変更したはずなのに反映されないことがあります。よくある原因は以下のとおりです。
- グループポリシーで上書きされている
MachinePolicyやUserPolicyスコープに管理者が設定を入れていると個人設定より優先されます。社用PCでは特に多いパターンです。 - スコープが噛み合っていない
LocalMachineを変えたつもりがCurrentUser側が優先されているケースもあります。Get-ExecutionPolicy -Listで全スコープを確認してみてください。 - PowerShellのバージョンが異なる
Windows PowerShell(5.1)とPowerShell 7系は独立した実行ポリシーを持っています。どちらで設定・実行しているか確認してみてください。
現在使っているPowerShellのバージョンは以下のコマンドで確認できます。
$PSVersionTableName Value
---- -----
PSVersion 7.4.2
PSEdition Core
...PSVersionが5.xであればWindows PowerShell、7.xであればPowerShell 7です。両方インストールしている場合はそれぞれで実行ポリシーを設定する必要があります。
Windows PowerShell 5.1とPowerShell 7の違いや、7系への更新方法はこちらで確認できます。

セキュリティ的に安全な推奨設定
個人PCの場合
自宅など自分だけが使うPCであれば以下の設定が使いやすいです。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser- ローカルで自作したスクリプトはそのまま実行できます。
- ネットからダウンロードしたスクリプトには署名チェックが入るので最低限の安全性は保てます。
- 管理者権限なしで設定できるのも手軽なポイントですね。
業務・共有PCの場合
複数人が使うPCや会社のPCではなるべくポリシーを変更しないことが基本です。
どうしても変更が必要な場合は以下のような対応が現実的です。
- 実行するセッションだけに一時的に適用する
Processスコープを使う。 - スクリプトに署名を付与して
AllSignedポリシーに対応させる。 - IT管理者に相談してグループポリシーを確認してもらう。
UnrestrictedやBypassをLocalMachineに設定するのはセキュリティリスクが上がるためおすすめしません。
よくある質問
PowerShellの全体の使い方や実践的な活用例をまとめた記事もあわせてどうぞ。
まとめ
- 実行ポリシーはPowerShellのスクリプト実行を制御するセキュリティの仕組みだよ。
- 「スクリプトの実行が無効になっているため~」エラーは
Set-ExecutionPolicy RemoteSigned -Scope CurrentUserで解決できることが多いよ。 - スコープは
CurrentUser(自分だけ)とLocalMachine(PC全体)で使い分けてね。 - 業務PCや共有PCではまずIT管理者やグループポリシーを確認してね。一時的な検証では環境のルールに問題がなければ
Processスコープで影響範囲を限定できるよ。 - 変更が反映されない場合はグループポリシーやPowerShellのバージョン違いを疑ってみてね。







