建立並註冊新的工作階段設定。

語法

Register-PSSessionConfiguration [-AssemblyName] <string> [-ConfigurationTypeName] <string> [-ApplicationBase <string>] [-Name] <string> [-Force] [-MaximumReceivedDataSizePerCommandMB <double>] [-MaximumReceivedObjectSizeMB <double>] [-NoServiceRestart] [-ProcessorArchitecture <string>] [-SecurityDescriptorSDDL <string>] [-ShowSecurityDescriptorUI] [-StartupScript <string>] [-ThreadApartmentState {<STA> | <MTA> | <Unknown>}] [-ThreadOptions {<Default> | <UseNewThread> | <ReuseThread> | <UseCurrentThread>}] [-Confirm] [-WhatIf] [<CommonParameters>]

描述

Register-PSSessionConfiguration Cmdlet 會在本機電腦上建立並註冊新的工作階段設定。這是進階的 Cmdlet,適合系統管理員用來管理使用者的自訂工作階段設定。

每個 Windows PowerShell 遠端工作階段都會使用工作階段設定。當使用者建立連線到電腦的工作階段時,他們就可以選取設定或使用啟用 Windows PowerShell 遠端功能時所註冊的預設設定。此外,使用者也可以設定 $PSSessionConfigurationName 喜好設定變數,以便針對目前工作階段中建立的工作階段指定預設設定。

工作階段設定會設定工作階段的環境。您可以使用實作新設定類別的組件以及使用在工作階段中執行的指令碼,藉以定義此設定。此設定會決定哪些命令可用於工作階段中,而且它可以包含保護電腦的設定,例如限制工作階段可以從遠端接收單一物件或命令之資料量的設定。您也可以指定決定使用該設定所需權限的安全性描述元。

參數

-ApplicationBase <string>

指定 AssemblyName 參數值中指定之組件檔案 (*.dll) 的路徑。當 AssemblyName 參數的值沒有包含路徑時,請使用此參數。預設值為目前目錄。

必要?

false

位置?

named

預設值

Current directory

接受管線輸入?

false

接受萬用字元?

false

-AssemblyName <string>

指定定義設定類型之組件檔案 (*.dll) 的名稱。您可以在這個參數或 ApplicationBase 參數的值中指定 .dll 的路徑。

指定 ConfigurationTypeName 參數時,此參數為必要項。

必要?

true

位置?

2

預設值

接受管線輸入?

false

接受萬用字元?

false

-ConfigurationTypeName <string>

指定用於此設定之 Microsoft .NET Framework 型別的完整名稱。您所指定的類型必須實作 System.Management.Automation.Remoting.PSSessionConfiguration 類別。

若要指定實作設定類型的組件檔案 (.dll),請使用 AssemblyName 和 AssemblyBase 參數。

建立類型可讓您控制更多工作階段設定的層面,例如公開或隱藏 Cmdlet 的特定參數,或是設定使用者無法覆寫的資料大小和物件大小限制。

如果您省略此參數,DefaultRemotePowerShellConfiguration 類別就會用於工作階段設定。

必要?

true

位置?

3

預設值

System.Management.Automation.Remoting.PSSessionConfiguration

接受管線輸入?

false

接受萬用字元?

false

-Force

抑制所有使用者提示,並重新啟動 WinRM 服務,而不進行提示。重新啟動服務可讓設定變更生效。

若要防止進行重新啟動並抑制重新啟動的提示,請使用 NoServiceRestart 參數。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-MaximumReceivedDataSizePerCommandMB <double>

限制可在任何單一遠端命令中傳送至這部電腦的資料量。請輸入以 MB 為單位的資料大小。預設值為 50 MB。

如果資料大小限制定義於 ConfigurationTypeName 參數所指定的設定類型中,系統就會使用設定類型中的限制而忽略這個參數的值。

必要?

false

位置?

named

預設值

50

接受管線輸入?

false

接受萬用字元?

false

-MaximumReceivedObjectSizeMB <double>

限制可在任何單一物件中傳送至這部電腦的資料量。請輸入以 MB 為單位的資料大小。預設值為 10 MB。

如果物件大小限制定義於 ConfigurationTypeName 參數所指定的設定類型中,系統就會使用設定類型中的限制而忽略這個參數的值。

必要?

false

位置?

named

預設值

10

接受管線輸入?

false

接受萬用字元?

false

-Name <string>

指定工作階段設定的名稱。此參數為必要項。

必要?

true

位置?

1

預設值

接受管線輸入?

false

接受萬用字元?

false

-NoServiceRestart

不重新啟動 WinRM 服務,並抑制重新啟動服務的提示。

根據預設,當您輸入 Register-PSSessionConfiguration 命令時,系統就會提示您重新啟動 WinRM 服務,讓新的工作階段設定生效。在重新啟動 WinRM 服務之前,新的工作階段設定不會生效。

若要重新啟動 WinRM 服務而不進行提示,請使用 Force 參數。若要手動重新啟動 WinRM 服務,請使用 Restart-Service Cmdlet。

必要?

false

位置?

named

預設值

False

接受管線輸入?

false

接受萬用字元?

false

-ProcessorArchitecture <string>

指定設定的處理器架構。這個值會決定使用此設定時,系統將啟動裝載 Windows PowerShell 的 32 位元或 64 位元版本處理序。有效的值包括 x86、AMD64 和 IA64。

預設值是由裝載工作階段設定之電腦的處理器架構所決定。

必要?

false

位置?

named

預設值

The processor architecture of the host computer.

接受管線輸入?

false

接受萬用字元?

false

-SecurityDescriptorSDDL <string>

指定設定的安全性描述元定義語言 (SDDL) 字串。

這個字串會決定使用新工作階段設定所需的權限。若要在工作階段中使用工作階段設定,使用者至少必須擁有該設定的 "Execute(Invoke)" 權限。

如果安全性描述元很複雜,請考慮使用 ShowSecurityDescriptorUI 參數而非這個參數。您無法在同一個命令中使用這兩個參數。

如果您省略此參數,WinRM 服務的根 SDDL 就會用於這項設定。若要檢視或變更根 SDDL,請使用 WS-Management 提供者,例如 "Get-Item wsman:\localhost\service\rootSDDL"。如需 WS-Management 提供者的詳細資訊,請輸入 "Get-Help wsman"。

必要?

false

位置?

named

預設值

The value of the root SDDL

接受管線輸入?

false

接受萬用字元?

false

-ShowSecurityDescriptorUI

顯示可協助您針對工作階段設定建立 SDDL 的內容表。在您輸入 Register-PSSessionConfiguration 命令,然後重新啟動 WinRM 服務之後,就會顯示此內容表。

設定設定的權限時,請記住,使用者至少必須擁有 "Execute(Invoke)" 權限才能在工作階段中使用工作階段設定。

您無法在同一個命令中使用 SecurityDescriptorSDDL 參數和此參數。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-StartupScript <string>

指定 Windows PowerShell 指令碼的完整路徑。指定的指令碼會在使用工作階段設定的新工作階段中執行。

您可以使用指令碼來進一步設定工作階段。如果指令碼產生錯誤 (即使是非終止錯誤),系統就不會建立工作階段,而且使用者的 New-PSSession 命令會失敗。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-ThreadApartmentState <ApartmentState>

決定工作階段中執行緒的 Apartment 狀態。有效的值包括 STA、MTA 和 Unknown。預設值為 Unknown。

必要?

false

位置?

named

預設值

Unknown

接受管線輸入?

false

接受萬用字元?

false

-ThreadOptions <PSThreadOptions>

定義在工作階段中執行命令時,執行緒的建立和使用方式。有效的值包括 Default、ReuseThread、UseCurrentThread 和 UseNewThread。預設值為 UseCurrentThread。

必要?

false

位置?

named

預設值

UseCurrentThread

接受管線輸入?

false

接受萬用字元?

false

-Confirm

在執行命令前先提示確認。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-WhatIf

說明執行命令時將會發生何種情況,但不會實際執行命令。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

<CommonParameters>

這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.

輸入和輸出

輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。

輸入

None

您無法經由管道將輸入輸出至這個 Cmdlet。

輸出

Microsoft.WSMan.Management.WSManConfigContainerElement

附註

若要在 Windows Vista、Windows Server 2008 和更新版的 Windows 上執行這個 Cmdlet,您必須使用 [以系統管理員身分執行] 選項啟動 Windows PowerShell。

這個 Cmdlet 會產生代表 Web Services for Management (WS-Management) 外掛程式設定的 XML 並將此 XML 傳送至 WS-Management,以便在本機電腦上註冊外掛程式 ("new-item wsman:\localhost\plugin")。

範例 1

C:\PS>register-pssessionConfiguration -name NewShell -applicationBase c:\MyShells\ -assemblyName MyShell.dll -configurationTypeName MyClass

描述
-----------
這個命令會註冊 NewShell 工作階段設定。它會使用 ApplicationName 和 ApplicationBase 參數來指定 MyShell.dll 檔案的位置,而該檔案會指定工作階段設定中的 Cmdlet 和提供者。此外,它也會使用 ConfigurationTypeName 參數來指定進一步設定工作階段的新類別。

若要使用這項設定,使用者會輸入 "new-pssession -configurationname newshell"。






範例 2

C:\PS>register-pssessionConfiguration -name MaintenanceShell -startupScript c:\ps-test\Maintenance.ps1

描述
-----------
這個命令會在本機電腦上註冊 MaintenanceShell 設定。此命令會使用 StartupScript 參數來指定 Maintenance.ps1 指令碼。

當使用者使用 New-PSSession 命令並選取 MaintenanceShell 設定時,Maintenance.ps1 指令碼就會在新的工作階段中執行。該指令碼可以設定工作階段,包括匯入模組、新增 Windows PowerShell 嵌入式管理單元,以及設定工作階段的執行原則。如果該指令碼產生任何錯誤,包括非終止錯誤,New-PSSession 命令就會失敗。






範例 3

C:\PS>$sddl = "O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;FA;SA;GWGX;;WD)"

C:\PS> register-pssessionconfiguration -name AdminShell -securityDescriptorSDDL $sddl -maximumReceivedObjectSizeMB 20 -startupScript c:\scripts\AdminShell.ps1

描述
-----------
這個範例會註冊 AdminShell 工作階段設定。

第一個命令會將自訂 SDDL 儲存在 $sddl 變數中。

第二個命令會註冊新的殼層。此命令會使用 SecurityDescritorSDDL 參數來指定 $sddl 變數值中的 SDDL,並使用 MaximumReceivedObjectSizeMB 參數來提高物件大小限制。此外,它也會使用 StartupScript 參數來指定設定工作階段的指令碼。

除了使用 SecurityDescriptorSDDL 參數以外,您也可以使用 ShowSecurityDescriptorUI 參數,以便顯示可用來設定工作階段設定之權限的內容表。當您在內容表中按一下 [確定] 時,此工具就會產生工作階段設定的 SDDL。






範例 4

C:\PS>$s = register-pssessionConfiguration -name MaintenanceShell -startupScript c:\ps-test\Maintenance.ps1

C:\PS> $s

   WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Plugin

Name                      Type                 Keys
----                      ----                 ----
MaintenanceShell          Container            {Name=MaintenanceShell}


C:\PS> $s.getType().fullname
TypeName: Microsoft.WSMan.Management.WSManConfigContainerElement


C:\PS> $s | format-list -property *

PSPath            : Microsoft.WSMan.Management\WSMan::localhost\Plugin\MaintenanceShell
PSParentPath      : Microsoft.WSMan.Management\WSMan::localhost\Plugin
PSChildName       : MaintenanceShell
PSDrive           : WSMan
PSProvider        : Microsoft.WSMan.Management\WSMan
PSIsContainer     : True
Keys              : {Name=MaintenanceShell}
Name              : MaintenanceShell
TypeNameOfElement : Container


C:\PS> dir wsman:\localhost\plugin

Name                      Type                 Keys
----                      ----                 ----
MaintenanceShell          Container            {Name=MaintenanceShell}
microsoft.powershell      Container            {Name=microsoft.powershell}
microsoft.powershell32    Container            {Name=microsoft.powershell32}

描述
-----------
這個範例會示範 Register-PSSessionConfiguration 命令將傳回 WSManConfigContainerElement,同時示範如何在 WSMan: 磁碟機中尋找容器元素。

第一個命令會使用 Register-PSSessionConfiguration Cmdlet 來註冊 MaintenanceShell 設定。它會將該 Cmdlet 所傳回的物件儲存在 $s 變數中。

第二個命令會顯示 $s 變數的內容。

第三個命令會使用 GetType 方法及其 FullName 屬性來顯示 Register-PSSessionConfiguration 所傳回之物件的類型名稱。

第四個命令會使用 Format-List Cmdlet,以清單顯示 Register-PSSessionConfiguration 所傳回之物件的所有屬性。PSPath 屬性會顯示該物件儲存在 WSMan: 磁碟機的目錄中。

第五個命令會使用 Get-ChildItem Cmdlet 來顯示 WSMan:\LocalHost\PlugIn 路徑中的項目。這些項目包括新的 MaintenanceShell 設定以及 Windows PowerShell 隨附的兩個預設設定。






範例 5

C:\PS>register-pssessionconfiguration -name WithProfile -startupScript add-profile.ps1

# Add-Profile.ps1

. c:\users\admin01\documents\windowspowershell\profile.ps1

描述
-----------
這個命令會在本機電腦上建立並註冊 WithProfile 工作階段設定。此命令會使用 StartupScript 參數來指示 Windows PowerShell 在使用該工作階段設定的任何工作階段設定中執行指定的指令碼。

系統也會顯示指定之指令碼 Add-Profile.ps1 的內容。此指令碼包含使用以句號表示起點的單一命令,可在工作階段的目前範圍中執行使用者的 CurrentUserAllHosts 設定檔。

如需設定檔的詳細資訊,請參閱 about_Profiles。如需以句號表示起點的詳細資訊,請參閱 about_Scopes。






請參閱




目錄