PowerShellの実行ポリシーについて
PowerShellの実行ポリシーについて
PowerShellスクリプト (.ps1 ファイル)を実行する際に、Windowsのデフォルト設定では、スクリプト実行がブロックされます。これは「PowerShell 実行ポリシー」というセキュリティ機能によるもので、コンピューターを悪意のあるスクリプトから保護します。ここでは「PowerShell 実行ポリシー」について解説します。
1. PowerShell 実行ポリシーの確認方法
現在の実行ポリシーの設定を確認するには、PowerShell を開いて以下のコマンドを実行します。
Get-ExecutionPolicy
これにより、現在有効になっているポリシー名(例: Restricted
, RemoteSigned
など)が表示されます。
Restricted
2. すべての実行ポリシーを確認する
さらに詳細な情報を知りたい場合は、-List
オプションを使います。これは、どの「スコープ」にどんなポリシーが設定されているかを表示します。
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine Undefined
3. PowerShell 実行ポリシーの設定方法
-
一時的にスクリプト実行を許可する場合
現在の PowerShell セッションにのみに、一時的にスクリプト実行を許可します。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force
この設定は、PowerShell ウィンドウを閉じると自動的に元の設定に戻ります。
-
永続的にスクリプト実行を許可する場合
現在のユーザーにのみ、スクリプト実行を許可します。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
この設定は、次回以降 PowerShell ウィンドウを開いても有効になります。
4. -ExecutionPolicy
Set-ExecutionPolicy
コマンドで設定できる主な実行ポリシーの種類は以下の通りです。
ポリシー名 | 説明 |
---|---|
Restricted |
コマンドのみ実行可能。スクリプトは実行禁止。(デフォルト) |
AllSigned |
信頼できる発行元によって署名されたスクリプトのみ実行可能。 |
RemoteSigned |
ローカルで作成したスクリプトのみ実行可能。インターネットからダウンロードした署名のないスクリプトはブロックされます。 |
Unrestricted |
すべてのスクリプトが実行可能。インターネットからダウンロードした署名のないスクリプトは実行前に警告が表示されます。 |
Bypass |
すべてのスクリプトが実行可能。何もブロックされず、警告やプロンプトは表示されません。 |
Undefined |
現在のスコープの実行ポリシーを未定義します。 |
5. -Scope
実行ポリシーをどの範囲に適用するかを指定するのが -Scope
オプションです。有効な実行ポリシーは、以下の表の優先順位に従って決定されます。
スコープ名 | 説明 |
---|---|
MachinePolicy |
組織の管理者によって設定されます。コンピューターのすべてのユーザーに対して設定します。 |
UserPolicy |
組織の管理者によって設定されます。ユーザー単位で設定します。 |
Process |
現在の PowerShell セッションにのみ影響します。 |
CurrentUser |
現在のユーザーのみに影響します。管理者権限は不要。 |
LocalMachine |
現在のコンピューターのすべてのユーザーに影響します。管理者権限が必要。 |
6. 最後に
実行ポリシーの変更はシステムのセキュリティに影響します。設定変更を行う際は、可能な限り影響範囲の狭いスコープ (Process
や CurrentUser
など、管理者権限が不要な範囲) を選択することを推奨します。また、実行するスクリプトが信頼できるものであることを常に確認してください。特に Unrestricted
や Bypass
など緩いポリシーを設定する場合は、そのリスクを十分に理解した上で行い、管理された環境では必ず組織のポリシーに従いましょう。
Discussion