Set-ExecutionPolicy
Windows コンピューターの PowerShell 実行ポリシーを設定します。
構文
All
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 を使用します。
Note
実行ポリシーは、グループ ポリシーで設定することもできます。 グループ ポリシーが設定されている場合は、実行ポリシー セットがローカルでオーバーライドされます。 Windows PowerShell 5.1 以降では、実行ポリシー設定が異なる場所に格納され、個別に管理されます。 Windows PowerShell (powershell.exe) の設定は、PowerShell (pwsh.exe) には影響しません。
例
例 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 は制限が厳しくなっていますが、グループ ポリシーと競合するため、有効なポリシーではありません。
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
例 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 パラメーターと共に コマンドレットを使用します。
ユーザーの有効な実行ポリシーが 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 パラメーターと共に コマンドレットを使用します。
例 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 |
| 規定値: | False |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | cf |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-ExecutionPolicy
実行ポリシーを指定します。 グループ ポリシーがなく、各スコープの実行ポリシーが Undefinedに設定されている場合、Restricted はすべてのユーザーに対して有効なポリシーになります。
許容される実行ポリシーの値は次のとおりです。
-
AllSigned。 すべてのスクリプトと構成ファイルが、ローカル コンピューターで記述されたスクリプトを含め、信頼できる発行元によって署名されている必要があります。 -
Bypass。 何もブロックされておらず、警告やプロンプトはありません。 -
Default。 既定の実行ポリシーを設定します。 Windows クライアントのRestrictedまたは Windows サーバーのRemoteSigned。 -
RemoteSigned。 インターネットからダウンロードしたすべてのスクリプトと構成ファイルが、信頼できる発行元によって署名されている必要があります。 Windows サーバー コンピューターの既定の実行ポリシーです。 -
Restricted。 構成ファイルを読み込んだり、スクリプトを実行したりしません。 Windows クライアント コンピューターの既定の実行ポリシーです。 -
Undefined。 スコープに対して実行ポリシーが設定されていません。 グループ ポリシーによって設定されていないスコープから、割り当てられた実行ポリシーを削除します。 すべてのスコープの実行ポリシーがUndefined場合、有効な実行ポリシーはRestricted。 -
Unrestricted。 PowerShell 6.0 以降では、これは Windows 以外のコンピューターの既定の実行ポリシーであり、変更することはできません。 すべての構成ファイルを読み込み、すべてのスクリプトを実行します。 インターネットからダウンロードされた署名されていないスクリプトを実行すると、実行前にアクセス許可の入力を求められます。
パラメーターのプロパティ
| 型: | ExecutionPolicy |
| 規定値: | None |
| 指定可能な値: | AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined, Unrestricted |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | 0 |
| 必須: | True |
| パイプラインからの値: | True |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Force
すべての確認プロンプトを非表示にします。 予期しない結果を回避するには、このパラメーターには注意してください。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | False |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Scope
実行ポリシーの影響を受けるスコープを指定します。 既定のスコープは LocalMachineです。 このパラメーターは、次の値を受け入れます。
-
MachinePolicy- コンピューターのすべてのユーザーのグループ ポリシーによって設定される -
UserPolicy- コンピューターの現在のユーザーのグループ ポリシーによって設定される -
Process- 現在の PowerShell セッションにのみ影響します -
CurrentUser- 現在のユーザーにのみ影響します -
LocalMachine- コンピューターのすべてのユーザーに影響する既定のスコープ
Note
MachinePolicy と UserPolicy はグループ ポリシーによって設定されます。 スコープをこれらの値のいずれかに設定しようとすると、PowerShell は、スコープがグループ ポリシーによって設定され、変更できないことを示すエラー メッセージを表示します。
実行ポリシーがグループ ポリシーによって定義されていない場合、有効な実行ポリシーは次のように優先順位によって決定されます。
-
Process- 優先順位が最も高い -
CurrentUser- 2 番目に高い優先順位 -
LocalMachine- 優先順位が最も低い
PowerShell で実行ポリシーを格納する方法の詳細については、「 NOTES 」セクションを参照してください。
パラメーターのプロパティ
| 型: | ExecutionPolicyScope |
| 規定値: | LocalMachine |
| 指定可能な値: | CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | 1 |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | True |
| 残りの引数からの値: | False |
-WhatIf
コマンドレットを実行した場合の動作を示します。 コマンドレットは実行されません。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | False |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | ウィスコンシン |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
CommonParameters
このコマンドレットでは、一般的なパラメーター -Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable の各パラメーターがサポートされています。 詳細については、about_CommonParametersを参照してください。
入力
ExecutionPolicy
実行ポリシー オブジェクトをこのコマンドレットにパイプできます。
String
実行ポリシーの名前を含む文字列をこのコマンドレットにパイプできます。
出力
None
このコマンドレットは出力を返しません。
メモ
Set-ExecutionPolicy はグループ ポリシーによって設定されるため、 MachinePolicy スコープと UserPolicy スコープを変更できません。
Set-ExecutionPolicy は、ユーザー設定がポリシーよりも制限が厳しい場合でも、グループ ポリシーをオーバーライドしません。
実行ポリシーがグループ ポリシーによって定義されていない場合、有効な実行ポリシーは次のように優先順位によって決定されます。
-
Process- 優先順位が最も高い。Processスコープは、現在の PowerShell セッションにのみ影響します。 実行ポリシーは、レジストリではなく、環境変数$Env:PSExecutionPolicyPreferenceに保存されます。 PowerShell セッションが閉じられると、変数と値が削除されます。 -
CurrentUser- 2 番目に高い優先順位。 この設定は、ユーザー固有のpowershell.config.jsonファイルに格納されます。 -
LocalMachine- 優先順位が最も低い。 この設定は、$PSHOME/powershell.config.jsonファイルに格納されます。
powershell.config.json ファイルの詳細については、「about_PowerShell_Config」を参照してください。