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-ExecutionPolicyList パラメーターを使用します。

例 2: グループ ポリシーと競合する実行ポリシーを設定する

このコマンドは、 LocalMachine スコープの実行ポリシーを Restricted に設定しようとします。 LocalMachine の方が制限が厳しくなっていますが、グループ ポリシーと競合するため、有効なポリシーではありません。 制限付きポリシーは、レジストリ ハイブ 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-ExecutionPolicyExecutionPolicy パラメーターを使用して 制限付き ポリシーを指定します。 Scope パラメーターは、既定のスコープ値 LocalMachine を指定します。 コマンドレットはGet-ChildItemHKLM プロバイダーと共に 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-ExecutionPolicySet-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-ExecutionPolicyList パラメーターを使用します。

ユーザーの有効な実行ポリシーが 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 パラメーターを使用して 未定義 のポリシーを指定します。 Scope パラメーターは CurrentUser を指定します。 実行ポリシー設定を表示するには、コマンドレットと Get-ExecutionPolicyList パラメーターを使用します。

例 6: 現在の PowerShell セッションの実行ポリシーを設定する

プロセス スコープは、現在の PowerShell セッションにのみ影響します。 実行ポリシーは環境変数 $env:PSExecutionPolicyPreference に保存され、セッションが閉じられると削除されます。

Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope Process

Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       AllSigned
  CurrentUser    RemoteSigned
 LocalMachine    RemoteSigned

Set-ExecutionPolicyExecutionPolicy パラメーターを使用して AllSigned ポリシーを指定します。 Scope パラメーターは、Process の値を指定します。 実行ポリシー設定を表示するには、コマンドレットと Get-ExecutionPolicyList パラメーターを使用します。

例 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-ExecutionPolicyExecutionPolicy パラメーターを使用して、RemoteSigned ポリシーを指定します。 ポリシーは、既定のスコープ LocalMachine に設定されます。

このコマンドレットは Get-ExecutionPolicyRemoteSigned が現在の PowerShell セッションの有効な実行ポリシーであることを示しています。

Start-ActivityTracker.ps1 スクリプトは、現在のディレクトリから実行されます。 スクリプトはデジタル署名されていないため、 RemoteSigned によってブロックされます。

この例では、スクリプトのコードがレビューされ、安全に実行できるものとして検証されました。 コマンドレットでは Unblock-FilePath パラメーターを使用してスクリプトのブロックを解除します。

実行ポリシーが 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。 ローカル コンピューターに書き込まれたスクリプトを含め、すべてのスクリプトと構成ファイルが信頼できる発行元によって署名されている必要があります。
  • バイパス。 何もブロックされず、警告やプロンプトは表示されません。
  • Default。 既定の実行ポリシーを設定します。 Windows クライアントまたは Windows サーバーの RemoteSigned に対して制限されます。
  • RemoteSigned。 インターネットからダウンロードしたすべてのスクリプトと構成ファイルが、信頼できる発行元によって署名されている必要があります。 Windows サーバー コンピューターの既定の実行ポリシー。
  • 制限付き。 構成ファイルを読み込んだり、スクリプトを実行したりしません。 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:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Scope

実行ポリシーの影響を受けるスコープを指定します。 既定のスコープは LocalMachine です

有効な実行ポリシーは、優先順位によって次のように決定されます。

  • MachinePolicy。 コンピューターのすべてのユーザーのグループ ポリシーによって設定されます。
  • UserPolicy。 コンピューターの現在のユーザーのグループ ポリシーによって設定されます。
  • プロセス。 現在の PowerShell セッションにのみ影響します。
  • CurrentUser。 現在のユーザーにのみ影響します。
  • LocalMachine。 コンピューターのすべてのユーザーに影響を与える既定のスコープ。

プロセス スコープは、現在の 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

入力

Microsoft.PowerShell.ExecutionPolicy, System.String

実行ポリシー オブジェクトまたは実行ポリシーの Set-ExecutionPolicy名前を含む文字列をパイプ処理できます。

出力

None

Set-ExecutionPolicy は出力を返しません。

メモ

Set-ExecutionPolicyでは、MachinePolicy スコープと UserPolicy スコープはグループ ポリシーによって設定されるため、変更されません。

Set-ExecutionPolicyは、ユーザー設定がポリシーよりも制限が厳しい場合でも、グループ ポリシーをオーバーライドしません。

グループ ポリシーコンピューターまたはユーザーに対して [スクリプト実行を有効にする] が有効になっている場合、ユーザー設定は保存されますが、有効ではありません。 PowerShell には、競合を説明するメッセージが表示されます。