about_Session_Configurations
簡単な説明
コンピューターにリモート接続できるユーザーとそのユーザーが実行できるコマンドを決定するセッション構成について説明します。
詳細な説明
セッション構成 ("エンドポイント" とも呼ばれます) は、ローカル コンピューター上の設定のグループであり、リモート ユーザーまたはローカル ユーザーがローカル コンピューター上の PowerShell に接続するときに作成される PowerShell セッションの環境を定義します。
コンピューターの管理者は、セッション構成を使用してコンピューターを保護し、コンピューターに接続するユーザーのカスタム環境を定義できます。
管理者は、セッション構成を使用して、コンピューターにリモートで接続するために必要なアクセス許可を決定することもできます。 既定では、セッション構成を使用してリモート接続するためのアクセス許可を持つのは Administrators グループのメンバーだけですが、既定の設定を変更して、すべてのユーザーまたは選択したユーザーがコンピューターにリモートで接続できるようにすることができます。
PowerShell 3.0 以降では、セッション構成ファイルを使用してセッション構成の要素を定義できます。 この機能により、コードを記述せずにセッションをカスタマイズしたり、セッション構成のプロパティを見つけたりすることが簡単になります。 セッション構成ファイルを作成するには、New-PSSessionConfiguration コマンドレットを使用します。 セッション構成ファイルの詳細については、「about_Session_Configuration_Files」を参照してください。
セッション構成は、WSMAN ベースの PowerShell リモート処理の機能です。 これらは、リモートの Windows コンピューターに接続するために New-PSSession
、 Invoke-Command
、または Enter-PSSession
コマンドレットを使用する場合にのみ使用されます。
Windows コンピューターでセッション構成を管理するには、 管理者として実行 オプションを使用して PowerShell を起動します。
セッション構成について
すべての PowerShell セッションでは、セッション構成が使用されます。 これには、New-PSSession コマンドレットまたは Enter-PSSession コマンドレットを使用して作成する永続的なセッションと、Invoke-Command などの WS-Management ベースのリモート処理テクノロジを使用するコマンドレットの ComputerName パラメーターを使用するときに PowerShell によって作成される一時的なセッションが含まれます。
管理者は、セッション構成を使用して、コンピューターのリソースを保護し、コンピューターに接続するユーザー向けのカスタム環境を作成できます。 たとえば、セッション構成を使用して、コンピューターがセッションで受け取るオブジェクトのサイズを制限したり、セッションの言語モードを定義したり、セッションで使用できるコマンドレット、プロバイダー、関数を指定したりできます。
セッション構成のセキュリティ記述子を構成することで、セッション構成を使用してコンピューターに接続できるユーザーを決定します。 セッションで使用するには、セッション構成に対する実行アクセス許可が必要です。 ユーザーがコンピューター上のセッション構成を使用するために必要なアクセス許可を持っていない場合、ユーザーはリモートでコンピューターに接続できません。
既定では、既定のセッション構成を使用するアクセス許可を持つのは、コンピューターの管理者だけです。 ただし、セキュリティ記述子を変更して、すべてのユーザー、誰も、または選択したユーザーのみがコンピューター上のセッション構成を使用できるようにすることができます。
組み込みのセッション構成
PowerShell 3.0 には、Microsoft.PowerShell と Microsoft.PowerShell.Workflow という名前の組み込みのセッション構成が含まれています。 64 ビット バージョンの Windows を実行しているコンピューターでは、PowerShell は Microsoft.PowerShell32 (32 ビット セッション構成) も提供します。
Microsoft.PowerShell セッション構成は、セッションに既定で使用されます。つまり、セッションを作成するコマンドに New-PSSession、Enter-PSSession、または Invoke-Command コマンドレットの ConfigurationName パラメーターが含まれていない場合です。
既定のセッション構成のセキュリティ記述子では、ローカル コンピューター上の Administrators グループのメンバーのみが使用できます。 そのため、既定の設定を変更しない限り、コンピューターにリモートで接続できるのは Administrators グループのメンバーだけです。
$PSSessionConfigurationName基本設定変数を使用して、既定のセッション構成を変更できます。 詳細については、「about_Preference_Variables」を参照してください。
ローカル コンピューターでのセッション構成の表示
ローカル コンピューターでセッション構成を取得するには、Get-PSSessionConfiguration コマンドレットを使用します。
たとえば、次のように入力します。
PS C:> Get-PSSessionConfiguration | Format-List -Property Name, Permission
Name : microsoft.powershell
Permission : BUILTIN\Administrators AccessAllowed
Name : microsoft.powershell.workflow
Permission : BUILTIN\Administrators AccessAllowed
Name : microsoft.powershell32
Permission : BUILTIN\Administrators AccessAllowed
セッション構成オブジェクトは PowerShell 3.0 で展開され、セッション構成ファイルを使用して構成されたセッション構成のプロパティが表示されます。
たとえば、セッション構成オブジェクトのすべてのプロパティを表示するには、次のように入力します。
PS C:> Get-PSSessionConfiguration | Format-List -Property *
PowerShell で WSMan プロバイダーを使用して、セッション構成を表示することもできます。 WSMan プロバイダーは、セッションに WSMAN: ドライブを作成します。
WSMAN: ドライブでは、セッション構成はプラグイン ノードにあります。 (すべてのセッション構成は Plugin ノードにありますが、プラグイン ノードにはセッション構成ではない項目があります)。
たとえば、ローカル コンピューターでセッション構成を表示するには、次のように入力します。
PS C:> dir wsman:\localhost\plugin\microsoft*
WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Plugin
Type Keys Name
---- ---- ----
Container {Name=microsoft.powershell} microsoft.powershell
Container {Name=microsoft.powershell.wor... microsoft.powershell.workflow
Container {Name=microsoft.powershell32} microsoft.powershell32
リモート コンピューターでのセッション構成の表示
リモート コンピューターでセッション構成を表示するには、Connect-WSMan コマンドレットを使用してリモート コンピューターのメモをローカル コンピューターの WSMAN: ドライブに追加し、WSMAN: ドライブを使用してセッション構成を表示します。
たとえば、次のコマンドは、Server01 リモート コンピューターのノードを WSMAN: ローカル コンピューター上のドライブに追加します。
PS C:> Connect-WSMan server01.corp.fabrikam.com
コマンドが完了したら、Server01 コンピューターのノードに移動してセッション構成を表示できます。
次に例を示します。
PS C:> cd wsman:
PS WSMan:> dir
ComputerName Type
------------ ----
localhost Container
server01.corp.fabrikam.com Container
PS WSMan:> dir server01\plugin\
WSManConfig: Microsoft.WSMan.Management\WSMan::server01.corp.fabrikam.com\Pl
ugin
Type Keys Name
---- ---- ----
Container {Name=microsoft.powershell} microsoft.powershell
Container {Name=microsoft.powershell.wor... microsoft.powershell.workflow
Container {Name=microsoft.powershell32} microsoft.powershell32
セッション構成のセキュリティ記述子の変更
Windows Server 2012 以降のリリースの Windows Server では、組み込みのセッション構成が既定でリモート ユーザーに対して有効になっています。 サポートされている他のバージョンの Windows では、リモート アクセスを許可するようにセッション構成のセキュリティ記述子を変更する必要があります。
コンピューター上のセッション構成へのリモート アクセスを有効にするには、Enable-PSRemoting コマンドレットを使用します。 このコマンドレットは、次の 2 つのセッション構成を作成します。
- "PowerShell" + "現在の PowerShell バージョン" として定義された名前
- 名前が "PowerShell.6" で、特定の PowerShell バージョンに関連付けされていません。
また、既定では、コンピューター上の Administrators グループのメンバーのみが、既定のセッション構成に対する実行アクセス許可を持ちますが、既定のセッション構成と作成するセッション構成でセキュリティ記述子を変更できます。
コンピューターにリモートで接続するアクセス許可を他のユーザーに付与するには、Set-PSSessionConfiguration コマンドレットを使用して、Microsoft.PowerShell および Microsoft.PowerShell32 セッション構成のセキュリティ記述子にそれらのユーザーの "実行" アクセス許可を追加します。
たとえば、次のコマンドは、Microsoft.PowerShell の既定のセッション構成のセキュリティ記述子を変更できるプロパティ ページを開きます。
Set-PSSessionConfiguration -name Microsoft.PowerShell `
-ShowSecurityDescriptorUI
コンピューター上のすべてのセッション構成に対する全員のアクセス許可を拒否するには、Disable-PSSessionConfiguration コマンドレットを使用します。 たとえば、次のコマンドは、コンピューターの既定のセッション構成を無効にします。
PS C:> Disable-PSSessionConfiguration -Name Microsoft.PowerShell
リモート ユーザーがコンピューターに接続できないようにし、ローカル ユーザーの接続を許可するには、Disable-PSRemoting コマンドレットを使用します。 Disable-PSRemoting は、コンピューター上のすべてのセッション構成に "Network_Deny_All" エントリを追加します。
PS C:> Disable-PSRemoting
リモート ユーザーがコンピューター上のすべてのセッション構成を使用できるようにするには、Enable-PSRemoting または Enable-PSSessionConfiguration コマンドレットを使用します。 たとえば、次のコマンドを実行すると、組み込みのセッション構成へのリモート アクセスが有効になります。
PS C:> Enable-PSSessionConfiguration -name Microsoft.Power*
セッション構成のセキュリティ記述子に他の変更を加える場合は、Set-PSSessionConfiguration コマンドレットを使用します。 SecurityDescriptorSDDL パラメーターを使用して、SDDL 文字列値を送信します。 ShowSecurityDescriptorUI パラメーターを使用して、新しい SDDL の作成に役立つユーザー インターフェイス プロパティ シートを表示します。
次に例を示します。
Set-PSSessionConfiguration -Name Microsoft.PowerShell `
-ShowSecurityDescriptorUI
新しいセッション構成の作成
ローカル コンピューターで新しいセッション構成を作成するには、Register-PSSessionConfiguration コマンドレットを使用します。 新しいセッション構成を定義するには、C# アセンブリ、PowerShell スクリプト、および Register-PSSessionConfiguration コマンドレットのパラメーターを使用できます。
たとえば、次のコマンドは、リモート コマンドから受信したデータを 20 メガバイト (MB) に制限する点を除き、Microsoft.PowerShell セッション構成と同じセッション構成を作成します。 (既定値は 50 MB)。
Register-PSSessionConfiguration -Name NewConfig `
-MaximumReceivedDataSizePerCommandMB 20
セッション構成を作成するときは、他のセッション構成コマンドレットを使用して管理でき、WSMAN: ドライブに表示されます。
詳細については、「Register-PSSessionConfiguration」を参照してください。
セッション構成の削除
ローカル コンピューターからセッション構成を削除するには、Unregister-PSSessionConfiguration コマンドレットを使用します。 たとえば、次のコマンドは、コンピューターから NewConfig セッション構成を削除します。
PS C:> Unregister-PSSessionConfiguration -Name NewConfig
詳細については、「Unregister-PSSessionConfiguration」を参照してください。
セッション構成の復元
誤って削除 (登録解除) された既定のセッション構成を復元するには、Enable-PSRemoting コマンドレットを使用します。
Enable-PSRemoting コマンドレットは、コンピューターに存在しないすべての既定のセッション構成を再作成します。 既存のセッション構成のプロパティ値は上書きまたは変更されません。
既定のセッション構成の元のプロパティ値を復元するには、Unregister-PSSessionConfiguration を使用してセッション構成を削除し、Enable-PSRemoting コマンドレットを使用して再作成します。
セッション構成の選択
セッションの特定のセッション構成を選択するには、New-PSSession、Enter-PSSession、または Invoke-Command の ConfigurationName パラメーターを使用します。
たとえば、このコマンドでは、New-PSSession コマンドレットを使用して、Server01 コンピューターで PSSession を開始します。 このコマンドでは、ConfigurationName パラメーターを使用して、Server01 コンピューター上の WithProfile 構成を選択します。
PS C:> New-PSSession -ComputerName Server01 -ConfigurationName WithProfile
このコマンドは、現在のユーザーが WithProfile セッション構成を使用するアクセス許可を持っているか、必要なアクセス許可を持つユーザーの資格情報を指定できる場合にのみ成功します。
$PSSessionConfigurationName基本設定変数を使用して、コンピューターの既定のセッション構成を変更することもできます。 $PSSessionConfigurationName基本設定変数の詳細については、about_Preference_Variablesを参照してください。
キーワード
about_Endpoints about_SessionConfigurations
関連項目
- about_Preference_Variables
- about_PSSessions
- about_Remote
- about_Session_Configuration_Files
- New-PSSession
- Disable-PSSessionConfiguration
- Enable-PSSessionConfiguration
- Get-PSSessionConfiguration
- Register-PSSessionConfiguration
- Set-PSSessionConfiguration
- Unregister-PSSessionConfiguration
- New-PSSessionConfigurationFile
- Test-PSSessionConfigurationFile
PowerShell