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