about_Session_Configuration_Files

簡単な説明

セッション構成ファイルについて説明します。セッション構成ファイルは、セッション構成 ("エンドポイント" とも呼ばれます) で使用され、セッション構成を使用するセッションの環境を定義するために使用されます。

詳細な説明

この情報は、Windows で実行されている PowerShell にのみ適用されます。

"セッション構成ファイル" は、セッション構成のプロパティと値のハッシュ テーブルを含む .pssc ファイル名拡張子を持つテキスト ファイルです。 セッション構成ファイルを使用して、セッション構成のプロパティを設定できます。 これにより、そのセッション構成を使用するすべての PowerShell セッションの環境が定義されます。

セッション構成ファイルを使用すると、複雑な C# アセンブリやスクリプトを使用せずに、カスタム セッション構成を簡単に作成できます。

"セッション構成" または "エンドポイント" は、コンピューターでセッションを作成できるユーザーなどを決定するローカル コンピューター設定のコレクションです。ユーザーがそれらのセッションで実行できるコマンド。セッションを特権仮想アカウントとして実行するかどうかを指定します。 セッション構成の詳細については、「 about_Session_Configurations」を参照してください。

セッション構成は Windows PowerShell 2.0 で導入され、セッション構成ファイルは Windows PowerShell 3.0 で導入されました。 セッション構成ファイルをセッション構成に含めるには、Windows PowerShell 3.0 を使用する必要があります。 ただし、Windows PowerShell 2.0 (以降) のユーザーは、セッション構成の設定の影響を受けます。

カスタム セッションの作成

セッション構成でセッション プロパティを指定することで、PowerShell セッションの多くの機能をカスタマイズできます。 カスタム実行空間を定義する C# プログラムを記述してセッションをカスタマイズすることも、セッション構成ファイルを使用してセッション構成を使用して作成されたセッションのプロパティを定義することもできます。 一般に、C# プログラムを記述するよりもセッション構成ファイルを使用する方が簡単です。

セッション構成ファイルを使用して、信頼性の高いユーザーに対して完全に機能するセッションなどの項目を作成できます。最小限のアクセスを許可するロックダウンされたセッション。特定のために設計され、それらのタスクに必要なモジュールのみを含むセッション。特権のないユーザーが特権アカウントとして特定のコマンドのみを実行できるセッション。

それに加えて、セッションのユーザーがスクリプト ブロックなどの PowerShell 言語要素を使用できるかどうか、またはコマンドのみを実行できるかどうかを管理できます。 セッションで実行できる PowerShell ユーザーのバージョンを管理できます。セッションにインポートするモジュールを管理する。セッション ユーザーが実行できるコマンドレット、関数、エイリアスを管理します。 RoleDefinitions フィールドを使用する場合は、グループ メンバーシップに基づいてセッション内のさまざまな機能をユーザーに提供できます。

RoleDefinitions とこの値を定義する方法の詳細については、New-PSRoleCapabilityFile コマンドレットのヘルプ トピックを参照してください。

セッション構成ファイルの作成

セッション構成ファイルを作成する最も簡単な方法は、New-PSSessionConfigurationFile コマンドレットを使用することです。 このコマンドレットは、正しい構文と形式を使用し、構成ファイルのプロパティ値の多くを自動的に検証するファイルを生成します。

セッション構成ファイルで設定できるプロパティの詳細については、New-PSSessionConfigurationFile コマンドレットのヘルプ トピックを参照してください。

次のコマンドは、既定値を使用するセッション構成ファイルを作成します。 結果の構成ファイルでは、Path パラメーター (ファイル パスを指定) 以外のパラメーターが含まれていないため、既定値のみが使用されます。

New-PSSessionConfigurationFile -Path .\Defaults.pssc

既定のテキスト エディターで新しい構成ファイルを表示するには、次のコマンドを使用します。

Invoke-Item -Path .\Defaults.pssc

ユーザーがコマンドを実行できるが、PowerShell 言語の他の要素を使用できないセッションのセッション構成を作成するには、次のように入力します。

New-PSSessionConfigurationFile -LanguageMode NoLanguage
-Path .\NoLanguage.pssc

前のコマンドでは、LanguageMode パラメーターを NoLanguage に設定すると、ユーザーはスクリプトの記述や実行、変数の使用などを実行できなくなります。

ユーザーが Get コマンドレットのみを使用できるセッションのセッション構成を作成するには、次のように入力します。

New-PSSessionConfigurationFile -VisibleCmdlets Get-*
-Path .\GetSessions.pssc

前の例では、VisibleCmdlets パラメーターを Get-* に設定すると、ユーザーは文字列値 "Get-" で始まる名前を持つコマンドレットに制限されます。

ユーザーの資格情報ではなく、特権仮想アカウントで実行されるセッションのセッション構成を作成するには、次のように入力します。

New-PSSessionConfigurationFile -RunAsVirtualAccount
-Path .\VirtualAccount.pssc

ユーザーに表示されるコマンドがロール機能ファイルで指定されているセッションのセッション構成を作成するには、次のように入力します。

New-PSSessionConfigurationFile -RoleDefinitions
@{ 'CONTOSO\User' = @{ RoleCapabilities = 'Maintenance' }}
-Path .\Maintenance.pssc

セッション構成ファイルの使用

セッション構成を作成するときにセッション構成ファイルを含めたり、後でセッション構成にファイルを追加したりできます。

セッション構成の作成時にセッション構成ファイルを含めるには、Register-PSSessionConfiguration コマンドレットの Path パラメーターを使用します。

たとえば、次のコマンドは、NoLanguage セッション構成を作成するときに NoLanguage.pssc ファイルを使用します。

Register-PSSessionConfiguration -Name NoLanguage
-Path .\NoLanguage.pssc

新しい NoLanguage セッションが開始されると、ユーザーは PowerShell コマンドにのみアクセスできます。

セッション構成ファイルを既存のセッション構成に追加するには、Set-PSSessionConfiguration コマンドレットと Path パラメーターを使用します。 これは、指定されたセッション構成で作成された新しいセッションに影響します。 Set-PSSessionConfiguration コマンドレットはセッション自体を変更し、セッション構成ファイルを変更しないことに注意してください。

たとえば、次のコマンドは、LockedDown セッション構成に NoLanguage.pssc ファイルを追加します。

Set-PSSessionConfiguration -Name LockedDown
-Path .\NoLanguage.pssc

ユーザーが LockedDown セッション構成を使用してセッションを作成すると、コマンドレットを実行できますが、変数の作成や使用、値の割り当て、その他の PowerShell 言語要素の使用はできなくなります。

次のコマンドでは、New-PSSession コマンドレットを使用して、LockedDown セッション構成を使用するセッションをコンピューター Srv01 に作成し、$s変数にセッションへのオブジェクト参照を保存します。 セッション構成の ACL (アクセス制御リスト) によって、セッションの作成に使用できるユーザーが決まります。

$s = New-PSSession -ComputerName Srv01
-ConfigurationName LockedDown

NoLanguage 制約が LockedDown セッション構成に追加されたため、LockedDown セッションのユーザーは PowerShell コマンドとコマンドレットのみを実行できます。 たとえば、次の 2 つのコマンドは、Invoke-Command コマンドレットを使用して、$s変数で参照されるセッションでコマンドを実行します。 Get-UICulture コマンドレットを実行し、変数を使用しない最初のコマンドは成功します。 $PSUICulture変数の値を取得する 2 番目のコマンドは失敗します。

Invoke-Command -Session $s {Get-UICulture}
en-US

Invoke-Command -Session $s {$PSUICulture}
The syntax is not supported by this runspace. This might be
because it is in no-language mode.
+ CategoryInfo          : ParserError: ($PSUICulture:String) [],
ParseException
+ FullyQualifiedErrorId : ScriptsNotAllowed

セッション構成ファイルの編集

RunAsVirtualAccount と RunAsVirtualAccountGroups を除くセッション構成のすべての設定は、セッション構成で使用されるセッション構成ファイルを編集することで変更できます。 これを行うには、まず、セッション構成ファイルのアクティブなコピーを検索します。

セッション構成でセッション構成ファイルを使用すると、PowerShell によってセッション構成ファイルのアクティブなコピーが作成され、ローカル コンピューターの $pshome\SessionConfig ディレクトリに格納されます。

セッション構成ファイルのアクティブなコピーの場所は、セッション構成オブジェクトの ConfigFilePath プロパティに格納されます。

次のコマンドは、NoLanguage セッション構成のセッション構成ファイルの場所を取得します。

(Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath

このコマンドは、次のようなファイル パスを返します。

C:\WINDOWS\System32\WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

任意のテキスト エディターで .pssc ファイルを編集できます。 ファイルが保存されると、セッション構成を使用する新しいセッションで使用されます。

RunAsVirtualAccount または RunAsVirtualAccountGroups の設定を変更する必要がある場合は、セッション構成の登録を解除し、編集された値を含むセッション構成ファイルを再登録する必要があります。

セッション構成ファイルのテスト

Test-PSSessionConfigurationFile コマンドレットを使用して、手動で編集したセッション構成ファイルをテストします。 これは重要です。ファイルの構文と値が有効でない場合、ユーザーはセッション構成を使用してセッションを作成できなくなります。

たとえば、次のコマンドは、NoLanguage セッション構成のアクティブなセッション構成ファイルをテストします。

Test-PSSessionConfigurationFile -Path C:\WINDOWS\System32\
WindowsPowerShell\v1.0\SessionConfig\
NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc

構成ファイルの構文と値が有効な Test-PSSessionConfigurationFile の場合は True を返します。 構文と値が無効な場合、コマンドレットは False を返します。

Test-PSSessionConfigurationFile を使用して、New-PSSessionConfiguration コマンドレットによって作成されるファイルなど、セッション構成ファイルをテストできます。 詳細については、Test-PSSessionConfigurationFile コマンドレットのヘルプ トピックを参照してください。

セッション構成ファイルの削除

セッション構成からセッション構成ファイルを削除することはできません。 ただし、既定の設定を使用する新しいファイルでファイルを置き換えることができます。 これにより、元の構成ファイルで使用される設定が実質的に取り消されます。

セッション構成ファイルを置き換えるには、既定の設定を使用する新しいセッション構成ファイルを作成し、Set-PSSessionConfiguration コマンドレットを使用してカスタム セッション構成ファイルを新しいファイルに置き換えます。

たとえば、次のコマンドは、既定のセッション構成ファイルを作成し、NoLanguage セッション構成のアクティブなセッション構成ファイルを置き換えます。

New-PSSessionConfigurationFile -Path .\Default.pssc
Set-PSSessionConfiguration -Name NoLanguage
-Path .\Default.pssc

これらのコマンドが完了すると、NoLanguage セッション構成は、実際には、そのセッション構成で作成されたすべてのセッションに対して完全な言語サポート (既定の設定) を提供します。

セッション構成のプロパティの表示 セッション構成ファイルを使用してセッション構成を表すセッション構成オブジェクトには、セッション構成の検出と分析を容易にする追加のプロパティがあります。 (次に示す型名には、書式設定されたビュー定義が含まれていることに注意してください)。プロパティを表示するには、Get-PSSessionConfiguration コマンドレットを実行し、返されたデータを Get-Member コマンドレットにパイプ処理します。

Get-PSSessionConfiguration NoLanguage | Get-Member
TypeName: Microsoft.PowerShell.Commands.PSSessionConfigurationCommands
#PSSessionConfiguration

Name                          MemberType     Definition
----                          ----------     ----------
Equals                        Method         bool Equals(System.O...
GetHashCode                   Method         int GetHashCode()
GetType                       Method         type GetType()
ToString                      Method         string ToString()
Architecture                  NoteProperty   System.String Archit...
Author                        NoteProperty   System.String Author...
AutoRestart                   NoteProperty   System.String AutoRe...
Capability                    NoteProperty   System.Object[] Capa...
CompanyName                   NoteProperty   System.String Compan...
configfilepath                NoteProperty   System.String config...
Copyright                     NoteProperty   System.String Copyri...
Enabled                       NoteProperty   System.String Enable...
ExactMatch                    NoteProperty   System.String ExactM...
ExecutionPolicy               NoteProperty   System.String Execut...
Filename                      NoteProperty   System.String Filena...
GUID                          NoteProperty   System.String GUID=0...
ProcessIdleTimeoutSec         NoteProperty   System.String Proces...
IdleTimeoutms                 NoteProperty   System.String IdleTi...
lang                          NoteProperty   System.String lang=e...
LanguageMode                  NoteProperty   System.String Langua...
MaxConcurrentCommandsPerShell NoteProperty   System.String MaxCon...
MaxConcurrentUsers            NoteProperty   System.String MaxCon...
MaxIdleTimeoutms              NoteProperty   System.String MaxIdl...
MaxMemoryPerShellMB           NoteProperty   System.String MaxMem...
MaxProcessesPerShell          NoteProperty   System.String MaxPro...
MaxShells                     NoteProperty   System.String MaxShells
MaxShellsPerUser              NoteProperty   System.String MaxShe...
Name                          NoteProperty   System.String Name=N...
PSVersion                     NoteProperty   System.String PSVersion
ResourceUri                   NoteProperty   System.String Resour...
RunAsPassword                 NoteProperty   System.String RunAsP...
RunAsUser                     NoteProperty   System.String RunAsUser
SchemaVersion                 NoteProperty   System.String Schema...
SDKVersion                    NoteProperty   System.String SDKVer...
OutputBufferingMode           NoteProperty   System.String Output...
SessionType                   NoteProperty   System.String Sessio...
UseSharedProcess              NoteProperty   System.String UseSha...
SupportsOptions               NoteProperty   System.String Suppor...
xmlns                         NoteProperty   System.String xmlns=...
XmlRenderingType              NoteProperty   System.String XmlRen...
Permission                    ScriptProperty System.Object Permis...

これらのプロパティを使用すると、特定のセッション構成を簡単に検索できます。 たとえば、ExecutionPolicy プロパティを使用して、RemoteSigned 実行ポリシーでセッションをサポートするセッション構成を検索できます。 ExecutionPolicy プロパティはセッション構成ファイルを使用するセッションにのみ存在するため、このコマンドは、条件を満たすセッション構成をすべて返さない場合があることに注意してください。

Get-PSSessionConfiguration |
where {$_.ExecutionPolicy -eq "RemoteSigned"}

次のコマンドは、RunAsUser が Exchange 管理者であるセッション構成を取得します。

 Get-PSSessionConfiguration |
where {$_.RunAsUser -eq "Exchange01\Admin01"}

構成に関連付けられているロール定義に関する情報を表示するには、Get-PSSessionCapability コマンドレットを使用します。 このコマンドレットを使用すると、特定のエンドポイントの特定のユーザーが使用できるコマンドと環境を特定できます。

メモ

セッション構成では、"空" セッションと呼ばれるセッションの種類もサポートされます。 空のセッションの種類を使用すると、選択したコマンドを使用してカスタム セッションを作成できます。 モジュール、関数、またはスクリプトを空のセッションに追加しない場合、セッションは式に限定され、実際には使用できない可能性があります。 SessionType プロパティは、空のセッションを操作しているかどうかを示します。

関連項目