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 プロパティは、空のセッションを操作しているかどうかを示します。
関連項目
- about_Session_Configurations
- New-PSRoleCapabilityFile
- New-PSSession
- Get-PSSessionCapability
- Disable-PSSessionConfiguration
- Enable-PSSessionConfiguration
- Get-PSSessionConfiguration
- Register-PSSessionConfiguration
- Set-PSSessionConfiguration
- Unregister-PSSessionConfiguration
- New-PSSessionConfigurationFile
- Test-PSSessionConfigurationFile
PowerShell