about_Session_Configuration_Files

適用対象: Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.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