はじめに:スクリプトが突然動かない理由
PowerShellでスクリプトを実行しようとしたとき、次のようなエラーが出たことはありませんか。
「このシステムではスクリプトの実行が無効になっています。」
せっかく作ったスクリプトが動かないと焦りますよね。
コードが間違っているのかと思ってしまいますが、実は多くの場合、原因は実行ポリシーというWindowsのセキュリティ設定です。
この記事では、初心者の方でも分かるように、エラーの原因と安全な対処方法を順番に解説します。
実行ポリシーとは何か?
実行ポリシーとは、PowerShellでスクリプトを実行できるかどうかを制御する仕組みです。
Windowsは初期状態で、悪意あるスクリプトの実行を防ぐために、実行を制限しています。
代表的な実行ポリシーは次の通りです。
- Restricted:スクリプト実行不可(既定値)
- RemoteSigned:ローカル作成スクリプトは実行可
- AllSigned:署名付きのみ実行可
- Unrestricted:すべて実行可(警告あり)
通常、開発や検証環境では「RemoteSigned」がよく使われます。
現在の実行ポリシーを確認する方法
まずは現在の設定を確認します。
Get-ExecutionPolicy
これで現在のポリシーが表示されます。
より詳しく確認する場合は次を実行します。
Get-ExecutionPolicy -List
このコマンドは、スコープごとの設定を表示します。
- MachinePolicy
- UserPolicy
- Process
- CurrentUser
- LocalMachine
上から順番に優先順位があります。上位スコープに設定があると、下位を変更しても反映されません。
実行ポリシーを変更する方法(Windows 11対応)
設定を変更するには、PowerShellを管理者として実行します。
スタートメニューで「PowerShell」と検索し、「管理者として実行」を選びます。
一般的な設定変更
Set-ExecutionPolicy RemoteSigned
確認メッセージが表示されたら「Y」を入力します。
現在のユーザーのみ変更する場合(推奨)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
この方法なら、システム全体には影響しません。
一時的に変更したい場合
Set-ExecutionPolicy Bypass -Scope Process
この設定は、PowerShellを閉じると元に戻ります。検証用途に向いています。
グループポリシーで変更できない場合
企業環境では、グループポリシーによって実行ポリシーが固定されていることがあります。
その場合は、次のようなエラーが表示されます。
「実行ポリシーの設定は、より優先順位の高いポリシーによって上書きされています。」
この場合は、IT管理者に確認が必要です。
よくあるトラブルと注意点
1. Unrestrictedにしても動かない
上位スコープが優先されている可能性があります。
Get-ExecutionPolicy -Listで確認します。
2. 管理者で実行していない
LocalMachineスコープを変更する場合は、管理者権限が必要です。
3. セキュリティを下げすぎない
Unrestrictedは便利ですが、セキュリティリスクがあります。
基本はRemoteSignedを推奨します。
安全に運用するための考え方
実行ポリシーは「安全装置」です。
開発環境では柔軟に、本番環境では慎重に設定するのが基本です。
特に企業環境では、勝手に変更せず、ルールに従うことが重要です。
まとめ
「このシステムではスクリプトの実行が無効になっています」というエラーは、実行ポリシーが原因です。
まずは現在の設定を確認し、必要に応じてCurrentUserスコープでRemoteSignedに変更するのが安全です。
仕組みを理解すれば、このエラーは怖くありません。
PowerShellの第一関門を、しっかり突破しましょう。
免責規定
この記事で提供される情報は、一般的なガイダンスを目的としており、すべての環境やシステムでの動作を保証するものではありません。
OSのバージョンやリリースによっては、記載されている事が実行できない、または異なる結果をもたらす可能性があります。
また、会社所有のパソコン、スマホ、タブレットなどでは、ポリシーや権限によって実行できない場合があります。
この記事の情報を使用することによって生じる問題や結果について、筆者およびサイト管理者は責任を負いません。
すべての操作は自己責任で行ってください。
もし、記事の中で間違いやご指摘があればコメントを頂けると大変ありがたいです。
最後までお読みいただきありがとうございました。
またお会いしましょう!

コメント