PowerShellスクリプト実行時に「このシステムではスクリプトの実行が無効になっている」というメッセージが表示される場合、実行ポリシーを変更する必要があります。
詳細はMicrosoft社のページをご確認ください。
実行ポリシーとは
実行ポリシーは、PowerShellがスクリプトを実行する際のセキュリティ設定であり、これにより、意図しないスクリプトの実行や不正なコードの実行を防ぐことができます。
例として、PowerShellには以下のような実行ポリシーが用意されています。
- Restricted:スクリプトの実行を禁止します。PowerShellの対話型シェルのみが使用可能です。
- AllSigned:信頼された発行元によって署名されたスクリプトのみを実行します。
- RemoteSigned:ローカルで作成されたスクリプトは実行できますが、インターネットからダウンロードされたスクリプトは信頼された発行元によって署名されている必要があります。
- Unrestricted:全てのスクリプトを実行できます。ただし、インターネットからダウンロードされたスクリプトの実行時には警告が表示されます。
- Bypass:すべてのスクリプトを無条件に実行します。警告も表示されません。
Windows クライアントコンピューター向けの既定の実行ポリシーはRestrictedのため、既定のままだと、スクリプト実行時に「このシステムではスクリプトの実行が無効になっている」というメッセージが表示されます。
現在の実行ポリシーの確認
現在の実行ポリシーを確認するには、Get-ExecutionPolicy
コマンドレットを使用します。
Get-ExecutionPolicy -List
実行ポリシーの設定
実行ポリシーを設定するには、Set-ExecutionPolicy
コマンドレットを使用します。以下に実行ポリシーの設定例を示します。
Restricted
Set-ExecutionPolicy -ExecutionPolicy Restricted
AllSigned
Set-ExecutionPolicy -ExecutionPolicy AllSigned
RemoteSigned
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Unrestricted
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
Bypass
Set-ExecutionPolicy -ExecutionPolicy Bypass
実行ポリシーの適用スコープ
実行ポリシーは、適用されるスコープを指定することができます。
スコープには、優先度順に以下の種類があります。
- MachinePolicy:グループポリシーによってコンピューターのすべてのユーザーに対して適用されます。
- UserPolicy:グループポリシーによってコンピューターの現在のユーザーに対して適用されます。
- CurrentUser:現在のユーザーに適用されます。
- Process:現在のプロセスに適用されます。PowerShellセッションを閉じると設定は失われます。
- LocalMachine:コンピューター全体に適用されます。(既定値)
スコープを指定して実行ポリシーを設定する例は以下のとおりです。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
実行ポリシーの確認と変更の注意点
実行ポリシーを変更する際には、以下の点に注意してください。
- 管理者権限が必要:実行ポリシーの変更は管理者権限で実行する必要があります。PowerShellを管理者として実行してください。
- セキュリティリスク:セキュリティリスクを理解した上で適切な実行ポリシーを設定してください。特に、
Unrestricted
やBypass
はリスクが高いため慎重に使用してください。
実行ポリシーの一時的なバイパス
特定のスクリプトのみ一時的に実行ポリシーをバイパスするには、-ExecutionPolicy
パラメーターを使用してPowerShellを起動します。
powershell.exe -ExecutionPolicy Bypass -File .\script.ps1
おわりに
PowerShellの実行ポリシーは、スクリプト実行時のセキュリティを確保するための重要な設定です。各実行ポリシーの特性と適用スコープを理解し、適切な設定を行うことで、PowerShellを安全に活用することができます。