about_Session_Configuration_Files
適用対象: Windows PowerShell 3.0
トピック
about_Session_Configuration_Files
概要
セッション構成 (「エンドポイント」) でそのセッション構成を使用するセッションの環境を定義するために使用されるセッション構成ファイルについて説明します。
詳細説明
「セッション構成ファイル」は .pssc というファイル名拡張子を持ち、セッション構成のプロパティと値のハッシュ テーブルを含むテキスト ファイルです。セッション構成ファイルを使用してセッション構成のプロパティを設定することにより、そのセッション構成を使用する Windows PowerShell® セッションの環境を定義できます。
セッション構成ファイルによって、複雑な C# アセンブリやスクリプトを使用せずにカスタム セッション構成を簡単に設計できます。
「セッション構成」(または「エンドポイント」) は、コンピューター上でセッションを作成できるユーザーと各ユーザーがセッション内で実行できるコマンドを決定するローカル コンピューター上の設定のコレクションです。セッション構成の詳細については、「about_Session_Configurations」(https://go.microsoft.com/fwlink/?LinkID=145152) を参照してください。
セッション構成は、Windows PowerShell 2.0 で導入されました。セッション構成ファイルは、Windows PowerShell 3.0 で導入されました。セッション構成ファイルをセッション構成に含めるには Windows PowerShell 3.0 を使用する必要がありますが、Windows PowerShell 2.0 以降のユーザーはセッション構成に含まれるすべての設定の影響を受けます。
カスタム セッションの作成
セッション構成でセッションのプロパティを指定することで、Windows PowerShell セッションの多くの機能をカスタマイズできます。カスタム実行空間を定義する C# プログラムを作成して、セッションをカスタマイズできます。また、セッション構成ファイルを使用して、セッション構成を使用して作成されたセッションのプロパティを定義することもできます。
セッション構成ファイルを使用して、信頼性の高いユーザー用の完全に機能するセッション、最小限のアクセス権を含むロックダウンされたセッション、および特定のタスク用に設計され、そのタスクに必要なモジュールのみを含むセッションを作成できます。
たとえば、セッションのユーザーが Windows PowerShell 言語の要素 (スクリプト ブロックなど) を使用できるのか、それともコマンドの実行しかできないのかを決定できます。セッション内で Windows PowerShell のどのバージョンを実行できるか、セッションにどのモジュールがインポートされるか、セッション ユーザーがどのコマンドレット、関数、およびエイリアス セッションを実行できるかなどを決定できます。
セッション構成ファイルの作成
セッション構成ファイルを作成する最も簡単な方法は、New-PSSessionConfiguration コマンドレットを使用することです。このコマンドレットは、正しい構文と形式を持つファイルを生成し、多くのプロパティ値を検証します。
セッション構成ファイルで設定できるプロパティの詳細については、New-PSSessionConfigurationFile コマンドレットのヘルプ トピックを参照してください。
既定値を含むセッション構成ファイルを作成するには、次のコマンドを使用します。ここにセクションの本文を挿入します。
PS C:\> New-PSSessionConfigurationFile -Path .\Defaults.pssc
既定のテキスト エディターでファイルを開いて表示するには、次のコマンドを使用します。
PS C:\> Invoke-Item -Path .\Defaults.pssc
ユーザーが Windows PowerShell 言語の他の要素を使用できず、コマンドのみを実行できるセッションのセッション構成を作成するには、次のように入力します。
PS C:\> New-PSSessionConfigurationFile -LanguageMode NoLanguage -Path .\NoLanguage.pssc
ユーザーが Get コマンドレットしか使用できないセッションのセッション構成を作成するには、次のように入力します。
PS C:\> New-PSSessionConfigurationFile -VisibleCmdlets Get-* -Path .\GetSessions.pssc
セッション構成ファイルの使用
セッション構成ファイルは、セッション構成を作成するときに含めるか、または後でセッション構成に追加できます。
セッション構成を作成するときにセッション構成ファイルを含めるには、Register-PSSessionConfiguration コマンドレットの Path パラメーターを使用します。
次のコマンドは、NoLanguage セッション構成の作成時に NoLanguage.pssc ファイルを含めます。
PS C:\> Register-PSSessionConfiguration -Name NoLanguage -Path .\NoLanguage.pssc
既存のセッション構成にセッション構成ファイルを追加するには、Set-PSSessionConfiguration コマンドレットの Path パラメーターを使用します。この変更は、コマンドの完了後、このセッション構成を使用して作成されたすべての新しいセッションに影響します。
次のコマンドは、LockedDown セッション構成に NoLanguage.pssc ファイルを追加します。
PS C:\> Set-PSSessionConfiguration -Name LockedDown -Path .\NoLanguage.pssc
LockedDown セッション構成を使用してセッションを作成した場合、ユーザーはコマンドレットを実行できますが、変数を作成して使用したり、値を代入したり、その他の Windows PowerShell 言語要素を使用したりできません。
たとえば、次のコマンドは New-PSSession コマンドレットを使用して、LockedDown セッション構成を使用するセッションをローカル コンピューター上に作成します。このコマンドは、セッションを $s 変数に保存します。このセッション構成を使用してセッションを作成できるユーザーは、セッション構成の ACL によって決定されます。
PS C:\> $s = New-PSSession -ComputerName Srv01 -ConfigurationName LockedDown
次のコマンドは、Invoke-Command コマンドレットを使用して、変数 $s のセッション内でコマンドを実行します。Get-UICulture コマンドレットを実行する最初のコマンドは成功します。しかし、$PSUICulture 変数の値を取得する 2 番目のコマンドは失敗します。
PS C:\> Invoke-Command -Session $s {Get-UICulture}
en-US
PS C:\> 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
セッション構成ファイルの編集
セッション構成で使用されているセッション構成ファイルを編集するには、最初にセッション構成ファイルのアクティブなコピーを見つけます。
セッション構成でセッション構成ファイルを使用すると、Windows PowerShell はセッション構成ファイルのアクティブなコピーを作成し、それをローカル コンピューター上の $pshome\SessionConfig ディレクトリに格納します。
セッション構成ファイルのアクティブなコピーの場所は、セッション構成オブジェクトの ConfigFilePath プロパティに格納されています。
次のコマンドは、NoLanguage セッション構成のセッション構成ファイルの場所を取得します。
PS C:\> (Get-PSSessionConfiguration -Name NoLanguage).ConfigFilePath
C:\WINDOWS\System32\WindowsPowerShell\v1.0\SessionConfig\NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc
任意のテキスト エディターでファイルを編集できます。ファイルは、保存した後すぐに変更され、セッション構成を使用する新しいセッションで有効になります。
セッション構成ファイルのテスト
セッション構成ファイルを手動で編集したら、必ずテストしてください。ファイルの構文や値が有効でない場合、ユーザーはそのセッション構成を使用してセッションを作成できません。
たとえば、次のコマンドは NoLanguage セッション構成のアクティブなセッション構成ファイルをテストします。
PS C:\> Test-PSSessionConfigurationFile -Path C:\WINDOWS\System32\WindowsPowerShell\v1.0\SessionConfig\NoLanguage_0c115179-ff2a-4f66-a5eb-e56e5692ba22.pssc
Test-PSSessionConfigurationFile を使用して、New-PSSessionConfiguration で作成されたファイルを含む任意のセッション構成ファイルをテストできます。詳細については、Test-PSSessionConfigurationFile コマンドレットのヘルプ トピックを参照してください。
セッション構成ファイルの削除
セッション構成ファイルをセッション構成から安全に削除することはできませんが、セッション構成ファイルを効果のないファイルに置き換えることができます。ここにセクションの本文を挿入します。
セッション構成ファイルを削除するには、既定の設定を含むセッション構成ファイルを作成し、Set-PSSessionConfiguration コマンドレットを使用してカスタム セッション構成ファイルを既定のバージョンに置き換えます。
たとえば、次のコマンドは、既定のセッション構成ファイルを作成し、NoLanguage セッション構成のアクティブなセッション構成ファイルを置き換えます。
PS C:\> New-PSSessionConfigurationFile -Path .\Default.pssc
PS C:\> Set-PSSessionConfiguration -Name NoLanguage -Path .\Default.pssc
このコマンドの結果、NoLanguage セッション構成を使用して作成されるすべてのセッションで完全な言語サポート (既定値) が提供されるようになります。
セッション構成のプロパティの表示
セッション構成ファイルを使用するセッション構成を表すセッション構成オブジェクトには、セッション構成を簡単に検出して分析できるようにする追加のプロパティが含まれています (型名に書式設定されたビューの定義が含まれていることに注意してください)。
PS C:\> Get-PSSessionConfiguration NoLanguage | Get-Member
TypeName: Microsoft.PowerShell.Commands.PSSessionConfigurationCommands#PSSessionConfiguration
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Architecture NoteProperty System.String Architecture=64
Author NoteProperty System.String Author=juneb
AutoRestart NoteProperty System.String AutoRestart=fals
Capability NoteProperty System.Object[] Capability=Sys
CompanyName NoteProperty System.String CompanyName=Unkn
configfilepath NoteProperty System.String configfilepath=C
Copyright NoteProperty System.String Copyright=(c) 20
Enabled NoteProperty System.String Enabled=True
ExactMatch NoteProperty System.String ExactMatch=true
ExecutionPolicy NoteProperty System.String ExecutionPolicy=
Filename NoteProperty System.String Filename=%windir
GUID NoteProperty System.String GUID=0c115179-ff
ProcessIdleTimeoutSec NoteProperty System.String ProcessIdleTimeo
IdleTimeoutms NoteProperty System.String IdleTimeoutms=72
lang NoteProperty System.String lang=en-US
LanguageMode NoteProperty System.String LanguageMode=NoL
MaxConcurrentCommandsPerShell NoteProperty System.String MaxConcurrentCom
MaxConcurrentUsers NoteProperty System.String MaxConcurrentUse
MaxIdleTimeoutms NoteProperty System.String MaxIdleTimeoutms
MaxMemoryPerShellMB NoteProperty System.String MaxMemoryPerShel
MaxProcessesPerShell NoteProperty System.String MaxProcessesPerS
MaxShells NoteProperty System.String MaxShells=300
MaxShellsPerUser NoteProperty System.String MaxShellsPerUser
Name NoteProperty System.String Name=NoLanguage
PSVersion NoteProperty System.String PSVersion=3.0
ResourceUri NoteProperty System.String ResourceUri=http
RunAsPassword NoteProperty System.String RunAsPassword=
RunAsUser NoteProperty System.String RunAsUser=
SchemaVersion NoteProperty System.String SchemaVersion=1.
SDKVersion NoteProperty System.String SDKVersion=1
OutputBufferingMode NoteProperty System.String OutputBufferingM
SessionType NoteProperty System.String SessionType=Defa
UseSharedProcess NoteProperty System.String UseSharedProcess
SupportsOptions NoteProperty System.String SupportsOptions=
xmlns NoteProperty System.String xmlns=http://sch
XmlRenderingType NoteProperty System.String XmlRenderingType
Permission ScriptProperty System.Object Permission {get=
新しいプロパティを使用して、セッション構成を簡単に検索できます。たとえば、RemoteSigned 実行ポリシーを含むセッションをサポートするセッション構成を見つけるには、ExecutionPolicy プロパティを使用します。ExecutionPolicy プロパティはセッション構成ファイルを使用するセッションにのみ存在するため、次のコマンドで必ずしも条件を満たすすべてのセッション構成を取得できるとは限りません。
PS C:\> Get-PSSessionConfiguration | where {$_.ExecutionPolicy -eq "RemoteSigned"}
次のコマンドは、RunAsUser が Exchange 管理者であるセッション構成を取得します。
PS C:\> Get-PSSessionConfiguration | where {$_.RunAsUser -eq "Exchange01\Admin01"}
注意事項
Empty セッション タイプは、一部のコマンドでカスタム セッションを作成するために用意されています。空のセッションにモジュール、関数、またはスクリプトを追加しないと、そのセッションは式だけに限定され、使用できない場合があります。
関連項目
about_Session_Configurations
New-PSSession
Disable-PSSessionConfiguration
Enable-PSSessionConfiguration
Get-PSSessionConfiguration
New-PSSessionConfigurationFile
Register-PSSessionConfiguration
Set-PSSessionConfiguration
Test-PSSessionConfigurationFile
Unregister-PSSessionConfiguration