Set-ExecutionPolicy

Windows PowerShell 実行ポリシーに対するユーザー設定を変更します。

構文

Set-ExecutionPolicy [-ExecutionPolicy] {<Unrestricted> | <RemoteSigned> | <AllSigned> | <Restricted> | <Default> | <Bypass> | <Undefined>} [[-Scope] {<Process> | <CurrentUser> | <LocalMachine> | <UserPolicy> | <MachinePolicy>}] [-Force] [-Confirm] [-WhatIf] [<CommonParameters>]

説明

Set-ExecutionPolicy は、Windows PowerShell 実行ポリシーに対するユーザー設定を変更します。

Windows Vista、Windows Server 2008、およびそれ以降のバージョンの Windows でこのコマンドを実行するには、コンピューターの Administrators グループのメンバーである場合でも、[管理者として実行] を指定して Windows PowerShell を起動する必要があります。

実行ポリシーは、Windows PowerShell のセキュリティ戦略の一部です。このポリシーは、ユーザーが構成ファイル (Windows PowerShell プロファイルを含む) を読み込んでスクリプトを実行できるかどうかを決定し、実行前にデジタル署名が必要なスクリプト (存在する場合) を決定します。

詳細については、「about_Execution_Policies」を参照してください。

パラメーター

-ExecutionPolicy <ExecutionPolicy>

シェルの新しい実行ポリシーを指定します。パラメーター名 ("Name") は省略可能です。

有効な値は次のとおりです。

-- Restricted: 構成ファイルの読み込みやスクリプトの実行を行いません。既定値は "Restricted" です。

-- AllSigned: すべてのスクリプトと構成ファイルが信頼された発行元によって署名されていることを要求します (ユーザーがローカル コンピューターに書き込むスクリプトを含む)。

-- RemoteSigned: インターネットからダウンロードされたすべてのスクリプトおよび構成ファイルが、信頼された発行元によって署名されていることを要求します。

-- Unrestricted: すべての構成ファイルを読み込み、すべてのスクリプトを実行します。インターネットからダウンロードされた署名されていないスクリプトを実行する場合、スクリプトを実行する前に確認を求められます。

-- Bypass: 何もブロックされず、警告もメッセージも表示されません。

-- Undefined: 現在のスコープから現在割り当てられている実行ポリシーを削除します。このパラメーターは、グループ ポリシー スコープ内で設定された実行ポリシーは削除しません。

必須

true

位置

1

既定値

パイプライン入力を許可する

true (ByValue)

ワイルドカード文字を許可する

false

-Force

プロンプトをすべて非表示にします。既定では、Set-ExecutionPolicy は実行ポリシーが変更されると警告を表示します。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-Scope <ExecutionPolicyScope>

実行ポリシーのスコープを指定します。既定値は LocalMachine です。

有効な値は次のとおりです。

-- Process: 実行ポリシーは現在の Windows PowerShell プロセスにのみ影響します。

-- CurrentUser: 実行ポリシーは現在のユーザーにのみ影響します。

-- LocalMachine: 実行ポリシーはコンピューターのすべてのユーザーに影響します。

特定のスコープから実行ポリシーを削除するには、そのスコープの実行ポリシーを Undefined に設定します。

必須

false

位置

2

既定値

LocalMachine

パイプライン入力を許可する

true (ByPropertyName)

ワイルドカード文字を許可する

false

-Confirm

コマンドを実行する前に確認メッセージを表示します。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-WhatIf

実際にコマンドを実行せずに、コマンドを実行すると何が起きるかを出力します。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

<CommonParameters>

このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。詳細については、次を参照してください: about_Commonparameters.

入力と出力

入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。

入力

Microsoft.PowerShell.ExecutionPolicy、System.String

パイプを使用して、実行ポリシー オブジェクトまたは実行ポリシーの名前が含まれた文字列を Set-ExecutionPolicy に渡すことができます。

出力

None

このコマンドレットによる戻り値はありません。

Set-ExecutionPolicy を使用すると、新しいユーザー設定がレジストリに書き込まれ、変更されるまでそのまま保持されます。

ただし、コンピューターまたはユーザーに対して "スクリプトの実行を有効にする" グループ ポリシーを有効にした場合、ユーザー設定はレジストリに書き込まれますが、有効にはならず、競合を説明するメッセージが表示されます。Set-ExecutionPolicy を使用して、ユーザー設定の制限がポリシーより厳しい場合でも、グループ ポリシーを上書きすることはできません。

例 1

C:\PS>set-executionpolicy remotesigned

説明
-----------
このコマンドは、シェルの実行ポリシーに対するユーザー設定を RemoteSigned に変更します。





例 2

C:\PS>Set-ExecutionPolicy Restricted

Set-ExecutionPolicy : Windows 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

説明
-----------
このコマンドは、シェルの実行ポリシーを "Restricted" に設定しようとします。"Restricted" 設定はレジストリに書き込まれますが、この設定はグループ ポリシーと競合するため、制限がグループ ポリシーより厳しい場合でも有効になりません。





例 3

C:\PS>invoke-command -computername Server01 -scriptblock {get-executionpolicy} | set-executionpolicy -force

説明
-----------
このコマンドは、リモート コンピューターから実行ポリシーを取得し、その実行ポリシーをローカル コンピューターに適用します。

このコマンドは、Invoke-Command コマンドレットを使用して、リモート コンピューターにコマンドを送信します。ExecutionPolicy (Microsoft.PowerShell.ExecutionPolicy) オブジェクトを Set-ExecutionPolicy にパイプできるため、Set-ExecutionPolicy コマンドに ExecutionPolicy パラメーターは必要ありません。

また、コマンドには Force パラメーターがあり、ユーザー プロンプトを非表示にします。





例 4

C:\PS>set-executionpolicy -scope CurrentUser -executionPolicy AllSigned -force

C:\PS> get-executionpolicy -list

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

C:\PS> get-executionpolicy
AllSigned

説明
-----------
この例は、特定のスコープの実行ポリシーを設定する方法を示しています。

最初のコマンドは、Set-ExecutionPolicy コマンドレットを使用して、現在のユーザーに対して AllSigned 実行ポリシーを設定します。また、Force パラメーターを使用して、ユーザー プロンプトを非表示にします。

2 番目のコマンドは、Get-ExecutionPolicy の List パラメーターを使用して、各スコープの実行ポリシーを取得します。その結果、現在のユーザーに対して設定されている実行ポリシーがコンピューターのすべてのユーザーの実行ポリシーと異なることがわかります。

3 番目のコマンドは、パラメーターを指定しないで Get-ExecutionPolicy コマンドレットを使用し、ローカル コンピューター上の現在のユーザーの有効な実行ポリシーを取得します。その結果、現在のユーザーに対して設定されている実行ポリシーがすべてのユーザーに対して設定されている実行ポリシーよりも優先することが確認できます。





例 5

C:\PS>set-executionpolicy -scope CurrentUser -executionPolicy Undefined

説明
-----------
このコマンドは、Undefined の値の実行ポリシーを使用して、現在のユーザー スコープに対して設定された実行ポリシーを効果的に削除します。その結果、グループ ポリシー内または LocalMachine (すべてのユーザー) スコープで設定された実行ポリシーが有効になります。

すべてのスコープの実行ポリシーを Undefined に設定した場合にグループ ポリシーが設定されていなければ、既定の実行ポリシーである Restricted がコンピューターのすべてのユーザーに対して有効になります。





関連項目

概念

Get-ExecutionPolicy
Set-AuthenticodeSignature
Get-AuthenticodeSignature
about_Execution_Policies
about_Signing