Set-ExecutionPolicy
Windows コンピューターの PowerShell 実行ポリシーを設定します。
構文
Set-ExecutionPolicy
[-ExecutionPolicy] <ExecutionPolicy>
[[-Scope] <ExecutionPolicyScope>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
コマンドレットは Set-ExecutionPolicy
、Windows コンピューターの PowerShell 実行ポリシーを変更します。 詳細については、「about_Execution_Policies」を参照してください。
Windows 以外のコンピューターの PowerShell 6.0 以降では、既定の実行ポリシーは であり Unrestricted
、変更できません。 コマンドレットは Set-ExecutionPolicy
使用できますが、PowerShell ではサポートされていないことを示すコンソール メッセージが表示されます。
実行ポリシーは、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
List パラメーターを使用します。
例 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
、 Path パラメーターとドライブを HKLM:
使用してレジストリの場所を指定します。
例 3: リモート コンピューターからローカル コンピューターに実行ポリシーを適用する
このコマンドは、リモート コンピューターから実行ポリシー オブジェクトを取得し、ローカル コンピューターにポリシーを設定します。 Get-ExecutionPolicy
は、 Microsoft.PowerShell.ExecutionPolicy オブジェクトをパイプラインの下に送信します。 Set-ExecutionPolicy
はパイプライン入力を受け入れ、 ExecutionPolicy パラメーターは必要ありません。
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
List パラメーターを使用します。
ユーザーの有効な実行ポリシーは になります AllSigned
。
例 5: 現在のユーザーの実行ポリシーを削除する
この例では、実行ポリシーを使用して Undefined
、指定したスコープの実行ポリシーを削除する方法を示します。
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
List パラメーターを使用します。
例 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
List パラメーターを使用します。
例 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
、 が現在の PowerShell セッションの有効な実行ポリシーであることを RemoteSigned
示しています。
スクリプトが Start-ActivityTracker.ps1 script is executed from the current directory. The script is blocked by
デジタル署名されていないため、RemoteSigned' です。
この例では、スクリプトのコードがレビューされ、安全に実行できるものとして検証されました。 コマンドレットはUnblock-File
、Path パラメーターを使用してスクリプトのブロックを解除します。
実行ポリシーが変更されなかったことを Unblock-File
確認するには、 Get-ExecutionPolicy
有効な実行ポリシー RemoteSigned
を表示します。
スクリプトは、 Start-ActivityTracker.ps1
現在のディレクトリから実行されます。 コマンドレットによってブロックが解除されたため、スクリプトの実行が Unblock-File
開始されます。
パラメーター
-Confirm
コマンドレットの実行前に確認を求めるメッセージが表示されます。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ExecutionPolicy
実行ポリシーを指定します。 グループ ポリシーがなく、各スコープの実行ポリシーが に Undefined
設定されている場合は、 Restricted
すべてのユーザーの有効なポリシーになります。
許容される実行ポリシーの値は次のとおりです。
AllSigned
. すべてのスクリプトと構成ファイルが、ローカル コンピューターに書き込まれたスクリプトを含め、信頼できる発行元によって署名されている必要があります。Bypass
. 何もブロックされず、警告やプロンプトは表示されません。Default
. 既定の実行ポリシーを設定します。Restricted
Windows クライアントの場合は 、WindowsRemoteSigned
サーバーの場合は 。RemoteSigned
. インターネットからダウンロードしたすべてのスクリプトと構成ファイルが、信頼できる発行元によって署名されている必要があります。 Windows サーバー コンピューターの既定の実行ポリシー。Restricted
. 構成ファイルを読み込んだり、スクリプトを実行したりしません。 Windows クライアント コンピューターの既定の実行ポリシー。Undefined
. スコープに対して実行ポリシーが設定されていない。 グループ ポリシーによって設定されていないスコープから割り当てられた実行ポリシーを削除します。 すべてのスコープの実行ポリシーが のUndefined
場合、有効な実行ポリシーは ですRestricted
。Unrestricted
. PowerShell 6.0 以降、これは Windows 以外のコンピューターの既定の実行ポリシーであり、変更することはできません。 すべての構成ファイルを読み込んで、すべてのスクリプトを実行します。 インターネットからダウンロードされた署名されていないスクリプトを実行すると、実行前にアクセス許可の入力を求められます。
Type: | ExecutionPolicy |
Accepted values: | AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined, Unrestricted |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Force
すべての確認プロンプトを表示しないようにします。 予期しない結果を避けるには、このパラメーターには注意が必要です。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Scope
実行ポリシーの影響を受けるスコープを指定します。 既定のスコープは です LocalMachine
。
有効な実行ポリシーは、優先順位によって次のように決定されます。
MachinePolicy
- コンピューターのすべてのユーザーのグループ ポリシーによって設定されますUserPolicy
- コンピューターの現在のユーザーのグループ ポリシーによって設定されますProcess
- 現在の PowerShell セッションにのみ影響しますLocalMachine
- コンピューターのすべてのユーザーに影響を与える既定のスコープCurrentUser
- 現在のユーザーにのみ影響します
スコープは Process
、現在の PowerShell セッションにのみ影響します。 実行ポリシーは、レジストリではなく環境変数 $env:PSExecutionPolicyPreference
に保存されます。 PowerShell セッションが閉じられると、変数と値が削除されます。
スコープの CurrentUser
実行ポリシーは、レジストリ ハイブ HKEY_LOCAL_USER
に書き込まれます。
スコープの LocalMachine
実行ポリシーは、レジストリ ハイブ HKEY_LOCAL_MACHINE
に書き込まれます。
Type: | ExecutionPolicyScope |
Accepted values: | CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy |
Position: | 1 |
Default value: | LocalMachine |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
コマンドレットの実行時に発生する内容を示します。 このコマンドレットは実行されません。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
入力
実行ポリシー オブジェクトをこのコマンドレットにパイプできます。
実行ポリシーの名前を含む文字列をこのコマンドレットにパイプできます。
出力
None
このコマンドレットは、出力を返しません。
メモ
Set-ExecutionPolicy
と UserPolicy
のスコープはグループ ポリシーによって設定されるため、変更MachinePolicy
されません。
Set-ExecutionPolicy
は、ユーザー設定がポリシーよりも制限が厳しい場合でも、グループ ポリシーをオーバーライドしません。
コンピューターまたはユーザーに対して [スクリプトの実行を有効にする] グループ ポリシーが有効になっている場合、ユーザー設定は保存されますが、有効ではありません。 PowerShell には、競合を説明するメッセージが表示されます。