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 工作階段的許多功能。您可以透過撰寫定義自訂 Runspace 的 C# 程式,來自訂工作階段;也可以使用工作階段組態檔案,來定義使用工作階段組態所建立之工作階段的屬性。

您可以使用工作階段組態檔案,為高度信任的使用者建立功能完整的工作階段、建立鎖定的工作階段以進行最少的存取,並針對只包含工作所需之模組的特定工作建立專用的工作階段。

例如,您可以決定工作階段的使用者是否可以使用 Windows PowerShell 語言元素 (例如指令碼區塊),還是只能執行命令。您可以決定可在工作階段中執行的 Windows PowerShell 版本、要匯入工作階段的模組,以及工作階段使用者可執行的 Cmdlet、函式和別名。

建立工作階段組態檔案

建立工作階段組態檔案的最簡單方式是使用 New-PSSessionConfiguration Cmdlet。這個 Cmdlet 會產生具有正確語法和格式的檔案,並會驗證其中許多屬性值。

如需您可以在工作階段組態檔案中設定之屬性的詳細描述,請參閱 New-PSSessionConfigurationFile Cmdlet 的說明主題。

若要使用預設值建立工作階段組態檔案,請使用下列命令:在此插入區段主體。

        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 Cmdlet 的工作階段建立工作階段組態,請輸入:

        PS C:\> New-PSSessionConfigurationFile -VisibleCmdlets Get-* -Path .\GetSessions.pssc

使用工作階段組態檔案

您可以在建立工作階段組態時加入工作階段組態檔案,或在稍後將其新增至工作階段組態。

若要在建立工作階段組態時加入工作階段組態檔案,請使用 Register-PSSessionConfiguration Cmdlet 的 Path 參數。

下列命令會在建立 NoLanguage 工作階段組態時加入 NoLanguage.pssc 檔案。

      PS C:\> Register-PSSessionConfiguration -Name NoLanguage -Path .\NoLanguage.pssc

若要將工作階段組態檔案新增至現有的工作階段組態,請使用 Set-PSSessionConfiguration Cmdlet 的 Path 參數。這項變更會影響命令完成之後使用工作階段組態建立的所有新工作階段。

下列命令會將 NoLanguage.pssc 檔案新增至 LockedDown 工作階段組態。

      PS C:\> Set-PSSessionConfiguration -Name LockedDown -Path .\NoLanguage.pssc

當使用者使用 LockedDown 工作階段組態建立工作階段時,可執行 Cmdlet,但無法建立或使用變數、指派值,或使用其他 Windows PowerShell 語言元素。

例如,下列命令使用 New-PSSession Cmdlet 在使用 LockedDown 工作階段組態的本機電腦上建立工作階段。命令會將工作階段儲存於 $s 變數中。工作階段組態的 ACL 決定誰可以使用它來建立工作階段。

      PS C:\> $s = New-PSSession -ComputerName Srv01 -ConfigurationName LockedDown

下列命令使用 Invoke-Command Cmdlet,在 $s 變數的工作階段中執行命令。用於執行 Get-UICulture Cmdlet 的第一個命令會成功。不過,用於取得 $PSUICulture 變數值的第二個命令會失敗。

      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 Cmdlet 的說明主題。

移除工作階段組態檔案

您無法從工作階段組態安全地移除工作階段組態檔案,但是您可以使用沒有任何效果的檔案來取代這個檔案。在此插入區段主體。

若要移除工作階段組態檔案,請使用預設設定建立工作階段組態檔案,然後使用 Set-PSSessionConfiguration Cmdlet 以預設版本來取代自訂工作階段組態檔案。

例如,下列命令會建立 Default 工作階段組態檔案,然後取代 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=

新屬性可讓您更輕鬆地搜尋工作階段組態。例如,您可以使用 ExecutionPolicy 屬性來尋找支援具有 RemoteSigned 執行原則之工作階段的工作階段組態。由於只有使用工作階段組態檔案的工作階段才會有 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