Set-ExecutionPolicy
Windows コンピューターの PowerShell 実行ポリシーを設定します。
構文
Set-ExecutionPolicy
[-ExecutionPolicy] <ExecutionPolicy>
[[-Scope] <ExecutionPolicyScope>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
Set-ExecutionPolicy
コマンドレットは、Windows コンピューターの PowerShell 実行ポリシーを変更します。 詳細については、about_Execution_Policiesを参照してください。
実行ポリシーは、PowerShell セキュリティ戦略の一部です。 実行ポリシーによって、PowerShell プロファイルなどの構成ファイルを読み込めるか、スクリプトを実行できるかが決まります。 また、スクリプトを実行する前にデジタル署名する必要があるかどうか。
Set-ExecutionPolicy
コマンドレットの既定のスコープは LocalMachine で、コンピューターを使用するすべてのユーザーに影響します。
LocalMachine の実行ポリシーを変更するには、 [管理者として実行] を使用して PowerShell を起動します。
各スコープの実行ポリシーを優先順位の順に表示するには、Get-ExecutionPolicy -List
を使用します。 PowerShell セッションの有効な実行ポリシーを表示するには、パラメーターなしで Get-ExecutionPolicy
を使用します。
例
例 1: 実行ポリシーを設定する
この例では、ローカル コンピューターの実行ポリシーを設定する方法を示します。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine RemoteSigned
Set-ExecutionPolicy
コマンドレットは、ExecutionPolicy パラメーターを使用して RemoteSigned ポリシーを指定します。
Scope パラメーターは、既定のスコープ値 LocalMachine を指定します。 実行ポリシー設定を表示するには、Get-ExecutionPolicy
パラメーターと共に コマンドレットを使用します。
例 2: グループ ポリシーと競合する実行ポリシーを設定する
このコマンドは、 LocalMachine スコープの実行ポリシーを Restricted に設定しようとします。 LocalMachine はより制限が厳しくなりますが、グループ ポリシーと競合するため、有効なポリシーではありません。 Restricted ポリシーは、レジストリ ハイブ HKEY_LOCAL_MACHINEに書き込まれます。
PS> Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope LocalMachine
Set-ExecutionPolicy : PowerShell updated your local preference successfully, but the setting is
overridden by the Group Policy applied to your system. Due to the override, your shell will retain
its current effective execution policy of "AllSigned". Contact your Group Policy administrator for
more information. At line:1 char:20 + Set-ExecutionPolicy <<<< restricted
PS> Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds
Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds
Name Property
---- --------
Microsoft.PowerShell Path : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
ExecutionPolicy : Restricted
ScriptedDiagnostics ExecutionPolicy : Unrestricted
Set-ExecutionPolicy
コマンドレットは、ExecutionPolicy パラメーターを使用して Restricted ポリシーを指定します。
Scope パラメーターは、既定のスコープ値 LocalMachine を指定します。
Get-ChildItem
コマンドレットは、HKLM プロバイダーと共に Path パラメーターを使用してレジストリの場所を指定します。
例 3: リモート コンピューターからローカル コンピューターに実行ポリシーを適用する
このコマンドは、リモート コンピューターから実行ポリシー オブジェクトを取得し、ローカル コンピューターにポリシーを設定します。
Get-ExecutionPolicy
は、Microsoft.PowerShell.ExecutionPolicy オブジェクトをパイプラインの下に送信します。
Set-ExecutionPolicy
はパイプライン入力を受け入れ、ExecutionPolicy パラメーターは必要ありません。
PS> Invoke-Command -ComputerName Server01 -ScriptBlock { Get-ExecutionPolicy } | Set-ExecutionPolicy
Invoke-Command
コマンドレットはローカル コンピューターで実行され、ScriptBlock をリモート コンピューターに送信します。
ComputerName パラメーターは、リモート コンピューター Server01を指定します。
ScriptBlock パラメーターは、リモート コンピューターで Get-ExecutionPolicy
実行されます。
Get-ExecutionPolicy
オブジェクトは、パイプラインから Set-ExecutionPolicy
に送信されます。
Set-ExecutionPolicy
実行ポリシーをローカル コンピューターの既定のスコープである LocalMachine に適用します。
例 4: 実行ポリシーのスコープを設定する
この例では、指定したスコープ CurrentUser の実行ポリシーを設定する方法を示します。 CurrentUser スコープは、このスコープを設定したユーザーにのみ影響します。
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser AllSigned
LocalMachine RemoteSigned
Set-ExecutionPolicy
ExecutionPolicy パラメータを使用して AllSigned ポリシーを指定します。
Scope パラメーターは CurrentUser を指定します。 実行ポリシー設定を表示するには、Get-ExecutionPolicy
パラメーターと共に コマンドレットを使用します。
ユーザーの有効な実行ポリシーは AllSigned になります。
例 5: 現在のユーザーの実行ポリシーを削除する
この例では、 未定義 の実行ポリシーを使用して、指定したスコープの実行ポリシーを削除する方法を示します。
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
Set-ExecutionPolicy
ExecutionPolicy パラメータを使用して、Undefined ポリシーを指定します。
Scope パラメーターは CurrentUser を指定します。 実行ポリシー設定を表示するには、Get-ExecutionPolicy
パラメーターと共に コマンドレットを使用します。
例 6: 現在の PowerShell セッションの実行ポリシーを設定する
Process スコープは、現在の PowerShell セッションにのみ影響します。 実行ポリシーは環境変数 $env:PSExecutionPolicyPreference
に保存され、セッションが閉じられると削除されます。
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope Process
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process AllSigned
CurrentUser RemoteSigned
LocalMachine RemoteSigned
Set-ExecutionPolicy
では、ExecutionPolicy パラメータを使用して AllSigned ポリシーを指定します。
Scope パラメーターは、値 Process を指定します。 実行ポリシー設定を表示するには、Get-ExecutionPolicy
パラメーターと共に コマンドレットを使用します。
例 7: 実行ポリシーを変更せずにスクリプトのブロックを解除して実行する
この例では、 RemoteSigned 実行ポリシーによって署名されていないスクリプトの実行が防止される方法を示します。
コマンドレットを使用して Unblock-File
であることを確認することをお勧めします。
Unblock-File
コマンドレットはスクリプトのブロックを解除して実行できますが、実行ポリシーは変更しません。
PS> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
PS> Get-ExecutionPolicy
RemoteSigned
PS> .\Start-ActivityTracker.ps1
.\Start-ActivityTracker.ps1 : File .\Start-ActivityTracker.ps1 cannot be loaded.
The file .\Start-ActivityTracker.ps1 is not digitally signed.
The script will not execute on the system.
For more information, see about_Execution_Policies at https://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Start-ActivityTracker.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
PS> Unblock-File -Path .\Start-ActivityTracker.ps1
PS> Get-ExecutionPolicy
RemoteSigned
PS> .\Start-ActivityTracker.ps1
Task 1:
Set-ExecutionPolicy
では、ExecutionPolicy パラメータを使用して RemoteSigned ポリシーを指定します。 ポリシーは、既定のスコープ LocalMachine に対して設定されます。
Get-ExecutionPolicy
コマンドレットは、RemoteSigned が現在の PowerShell セッションの有効な実行ポリシーであることを示しています。
Start-ActivityTracker.ps1 スクリプトは、現在のディレクトリから実行されます。 スクリプトはデジタル署名されていないため、 RemoteSigned によってスクリプトがブロックされます。
この例では、スクリプトのコードがレビューされ、安全に実行できるものとして検証されています。
Unblock-File
コマンドレットは、Path パラメーターを使用してスクリプトのブロックを解除します。
Unblock-File
実行ポリシーが変更されていないことを確認するには、Get-ExecutionPolicy
に有効な実行ポリシー RemoteSigned が表示されます。
スクリプト Start-ActivityTracker.ps1 は、現在のディレクトリから実行されます。 スクリプトは、Unblock-File
コマンドレットによってブロック解除されたため、実行を開始します。
パラメーター
-Confirm
コマンドレットを実行する前に確認を求めるメッセージが表示されます。
型: | SwitchParameter |
Aliases: | cf |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-ExecutionPolicy
実行ポリシーを指定します。 グループポリシーがなく、各スコープの実行ポリシーが 未定義に設定されている場合、 制限付き がすべてのユーザーに対して有効なポリシーになります。
許容される実行ポリシーの値は次のとおりです。
- AllSigned。 すべてのスクリプトと構成ファイルが、ローカル コンピューターで記述されたスクリプトを含め、信頼できる発行元によって署名されている必要があります。
- バイパス。 何もブロックされておらず、警告やプロンプトはありません。
- Default。 既定の実行ポリシーを設定します。 Windows クライアントの場合は制限付き、Windows サーバーの場合は RemoteSigned です。
- RemoteSigned。 インターネットからダウンロードしたすべてのスクリプトと構成ファイルが、信頼できる発行元によって署名されている必要があります。 Windows サーバー コンピューターの既定の実行ポリシーです。
- 制限付き。 構成ファイルを読み込んだり、スクリプトを実行したりしません。 デフォルトの実行ポリシー Windows クライアント コンピュータ。
- Undefined。 スコープに対して実行ポリシーが設定されていません。 グループ ポリシーによって設定されていないスコープから、割り当てられた実行ポリシーを削除します。 すべてのスコープの実行ポリシーが [未定義] の場合、有効な実行ポリシーは [制限付き] です。
- 無制限。 すべての構成ファイルを読み込み、すべてのスクリプトを実行します。 インターネットからダウンロードした署名されていないスクリプトを実行すると、実行前に許可を求めるメッセージが表示されます。
型: | ExecutionPolicy |
指定可能な値: | AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined, Unrestricted |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Force
すべての確認プロンプトを非表示にします。 予期しない結果を回避するには、このパラメーターには注意してください。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Scope
実行ポリシーの影響を受けるスコープを指定します。 デフォルトのスコープは LocalMachine です。
有効な実行ポリシーは、次のように優先順位によって決定されます。
- MachinePolicy です。 コンピューターのすべてのユーザーのグループ ポリシーによって設定されます。
- UserPolicy です。 コンピューターの現在のユーザーのグループ ポリシーによって設定されます。
- プロセス。 現在の PowerShell セッションにのみ影響します。
- CurrentUser です。 現在のユーザーにのみ影響します。
- LocalMachine です。 コンピューターのすべてのユーザーに影響を与える既定のスコープ。
Process スコープは、現在の PowerShell セッションにのみ影響します。 実行ポリシーは、レジストリではなく、環境変数 $env:PSExecutionPolicyPreference
に保存されます。 PowerShell セッションが閉じられると、変数と値が削除されます。
CurrentUser スコープの実行ポリシーは、レジストリ ハイブ HKEY_LOCAL_USERに書き込まれます。
LocalMachine スコープの実行ポリシーは、レジストリ ハイブ HKEY_LOCAL_MACHINEに書き込まれます。
型: | ExecutionPolicyScope |
指定可能な値: | CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy |
配置: | 1 |
規定値: | LocalMachine |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-WhatIf
コマンドレットを実行した場合の動作を示します。 コマンドレットは実行されません。
型: | SwitchParameter |
Aliases: | wi |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
Microsoft.PowerShell.ExecutionPolicy, System.String
実行ポリシーオブジェクトまたは実行ポリシーの名前を含む文字列をパイプ処理 Set-ExecutionPolicy
できます。
出力
None
Set-ExecutionPolicy
出力を返しません。
メモ
Set-ExecutionPolicy
MachinePolicy スコープと UserPolicy スコープは、グループ ポリシーによって設定されるため、変更されません。
Set-ExecutionPolicy
は、ユーザー設定がポリシーよりも制限が厳しい場合でも、グループ ポリシーをオーバーライドしません。
コンピュータまたはユーザーに対してグループ ポリシーの [ スクリプト実行を有効にする] が有効になっている場合、ユーザー設定は保存されますが、有効ではありません。 PowerShell には、競合を説明するメッセージが表示されます。