Set-PSSessionConfiguration

變更已註冊會話組態的屬性。

Syntax

Set-PSSessionConfiguration
   [-Name] <String>
   [-ApplicationBase <String>]
   [-RunAsCredential <PSCredential>]
   [-ThreadApartmentState <ApartmentState>]
   [-ThreadOptions <PSThreadOptions>]
   [-AccessMode <PSSessionConfigurationAccessMode>]
   [-UseSharedProcess]
   [-StartupScript <String>]
   [-MaximumReceivedDataSizePerCommandMB <Double>]
   [-MaximumReceivedObjectSizeMB <Double>]
   [-SecurityDescriptorSddl <String>]
   [-ShowSecurityDescriptorUI]
   [-Force]
   [-NoServiceRestart]
   [-PSVersion <Version>]
   [-SessionTypeOption <PSSessionTypeOption>]
   [-TransportOption <PSTransportOption>]
   [-ModulesToImport <Object[]>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-PSSessionConfiguration
   [-Name] <String>
   [-AssemblyName] <String>
   [-ApplicationBase <String>]
   [-ConfigurationTypeName] <String>
   [-RunAsCredential <PSCredential>]
   [-ThreadApartmentState <ApartmentState>]
   [-ThreadOptions <PSThreadOptions>]
   [-AccessMode <PSSessionConfigurationAccessMode>]
   [-UseSharedProcess]
   [-StartupScript <String>]
   [-MaximumReceivedDataSizePerCommandMB <Double>]
   [-MaximumReceivedObjectSizeMB <Double>]
   [-SecurityDescriptorSddl <String>]
   [-ShowSecurityDescriptorUI]
   [-Force]
   [-NoServiceRestart]
   [-PSVersion <Version>]
   [-SessionTypeOption <PSSessionTypeOption>]
   [-TransportOption <PSTransportOption>]
   [-ModulesToImport <Object[]>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-PSSessionConfiguration
   [-Name] <String>
   [-RunAsCredential <PSCredential>]
   [-ThreadApartmentState <ApartmentState>]
   [-ThreadOptions <PSThreadOptions>]
   [-AccessMode <PSSessionConfigurationAccessMode>]
   [-UseSharedProcess]
   [-StartupScript <String>]
   [-MaximumReceivedDataSizePerCommandMB <Double>]
   [-MaximumReceivedObjectSizeMB <Double>]
   [-SecurityDescriptorSddl <String>]
   [-ShowSecurityDescriptorUI]
   [-Force]
   [-NoServiceRestart]
   [-TransportOption <PSTransportOption>]
   -Path <String>
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

此 Cmdlet 僅適用於 Windows 平臺。

Cmdlet 會 Set-PSSessionConfiguration 變更本機計算機上的會話組態屬性。

使用 Name 參數來識別您想要變更的工作階段組態。 使用其他參數來指定會話組態屬性的新值。 若要從組態中刪除屬性值,並使用預設值,請輸入空字串 ("") 或對應參數的值 $Null

從 PowerShell 3.0 開始,您可以使用工作階段組態檔來定義工作階段組態。 這項功能提供簡單且可探索的方法,可用來設定和變更使用會話設定的會話屬性。 若要指定會話組態檔,請使用Set-PSSessionConfigurationPath 參數。 如需會話組態檔的相關信息,請參閱 about_Session_Configuration_Files。 如需如何建立和修改會話組態檔的相關信息,請參閱 New-PSSessionConfigurationFile Cmdlet。

會話組態會定義連線到本機計算機的遠端會話 (PSSessions) 環境。 每個 PSSession 都會使用會話設定。 會話組態會決定 PSSession 的功能,例如會話中可用的模組、允許執行的 Cmdlet、語言模式、配額和逾時。 會話設定的安全性描述元會決定誰可以使用會話組態來連線到本機計算機。 如需工作階段設定的詳細資訊,請參閱 about_Session_Configurations

若要查看會話組態的屬性,請使用 Get-PSSessionConfiguration Cmdlet 或 WSMan 提供者。 如需 WSMan 提供者的詳細資訊,請輸入 Get-Help WSMan

範例

範例 1:建立和變更會話設定

此範例示範如何新增和移除組態中的啟動腳本。

第一個命令會建立 管理員 Shell 組態。 第二個命令會將 AdminConfig.ps1 腳本新增至組態。 當您重新啟動 WinRM 時,變更有效。 第三個命令會 AdminConfig.ps1 從組態中移除腳本。

Register-PSSessionConfiguration -Name "AdminShell" -AssemblyName "C:\Shells\AdminShell.dll" -ConfigurationTypeName "AdminClass"
Set-PSSessionConfiguration -Name "AdminShell" -StartupScript "AdminConfig.ps1"
Set-PSSessionConfiguration -Name "AdminShell" -StartupScript $Null

範例 2:顯示結果

本範例會將 MaximumReceivedObjectSizeMB 屬性的值增加為 20 此命令也會提示您重新啟動 WinRM 服務。 變更在重新啟動 WinRM 服務之前無效。

Set-PSSessionConfiguration -Name "IncObj" -MaximumReceivedObjectSizeMB 20

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

ParamName                       ParamValue
---------                       ----------
psmaximumreceivedobjectsizemb   20

"Restart WinRM service"
WinRM service need to be restarted to make the changes effective. Do you want to run the command "restart-service winrm"?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): y

範例 3:以不同方式顯示結果

在這裡範例中,Set-PSSessionConfiguration將 MaintenanceShell 工作階段組態中的啟動文稿變更為 Maintenance.ps1。 輸出會顯示變更,並提示您重新啟動 WinRM 服務。 回應為 y (是)。

Get-PSSessionConfiguration取得 MaintenanceShell 工作階段組態。 管線運算子 (|) 會將命令的結果傳送至 Format-List,這會在清單中顯示組態物件的所有屬性。 接下來,使用 WSMan 提供者,我們檢視 MaintenanceShell 組態的初始化參數。 Get-ChildItem會取得 MaintenanceShell 外掛程式之 InitializationParameters 節點中的子專案。 如需 WSMan 提供者的詳細資訊,請輸入 Get-Help wsman

Set-PSSessionConfiguration -Name "MaintenanceShell" -StartupScript "C:\ps-test\Maintenance.ps1"

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

ParamName            ParamValue
---------            ----------
startupscript        c:\ps-test\Mainte...

"Restart WinRM service"
WinRM service need to be restarted to make the changes effective. Do you want to run
the command "restart-service winrm"?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): y

Get-PSSessionConfiguration MaintenanceShell | Format-List -Property *

xmlns            : http://schemas.microsoft.com/wbem/wsman/1/config/PluginConfiguration
Name             : MaintenanceShell
Filename         : %windir%\system32\pwrshplugin.dll
SDKVersion       : 1
XmlRenderingType : text
lang             : en-US
PSVersion        : 2.0
startupscript    : c:\ps-test\Maintenance.ps1
ResourceUri      : http://schemas.microsoft.com/powershell/MaintenanceShell
SupportsOptions  : true
ExactMatch       : true
Capability       : {Shell}
Permission       :

Get-ChildItem WSMan:\localhost\Plugin\MaintenanceShell\InitializationParameters

ParamName     ParamValue
---------     ----------
PSVersion     2.0
startupscript c:\ps-test\Maintenance.ps1

參數

-AccessMode

啟用和停用會話組態,並判斷它是否可用於計算機上的遠端或本機會話。 此參數可接受的值為:

  • Disabled. 停用會話設定。 它無法用於電腦的遠端或本機存取。 這個值會將 工作階段組態的 Enabled 屬性設定 (WSMan:\<ComputerName>\PlugIn\<SessionConfigurationName>\Enabled) 設定為 False
  • Local. 將Network_Deny_All專案新增至會話設定的安全性描述元。 本機計算機的使用者可以使用會話設定,在同一部計算機上建立本機回送會話,但遠端使用者遭到拒絕存取。
  • Remote. 從 會話組態的安全性描述項中移除Deny_AllNetwork_Deny_All 專案。 本機和遠端電腦的使用者可以使用會話設定來建立會話,並在這部計算機上執行命令。

預設值為 Remote

其他 Cmdlet 稍後可以覆寫此參數的值。 例如, Enable-PSRemoting Cmdlet 會啟用電腦上的所有會話設定,並允許遠端訪問它們,而 Disable-PSRemoting Cmdlet 只允許本機存取電腦上的所有會話設定。

此參數是在 PowerShell 3.0 中引進的。

Type:PSSessionConfigurationAccessMode
Accepted values:Disabled, Local, Remote
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ApplicationBase

指定 AssemblyName 參數值中指定的元件檔路徑 (*.dll)。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AssemblyName

指定組件名稱。 此 Cmdlet 會根據元件中定義的類別來建立會話組態。

輸入定義會話組態之元件 .dll 檔的檔名或完整路徑。 如果您只輸入檔名,您可以在 ApplicationBase 參數的值中輸入路徑。

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ConfigurationTypeName

指定 AssemblyName 參數中元件中定義的工作階段組態類型。 您指定的類型必須實 作 System.Management.Automation.Remoting.PSSessionConfiguration 類別。

當您指定元件名稱時,需要此參數。

Type:String
Position:2
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

執行 Cmdlet 之前先提示您確認。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

隱藏所有使用者提示,並在不提示的情況下重新啟動 WinRM 服務。 重新啟動服務會讓設定變更生效。

若要防止重新啟動並隱藏重新啟動提示,請使用 NoServiceRestart 參數。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaximumReceivedDataSizePerCommandMB

指定可在任何單一遠端命令中傳送至這部電腦之數據量的限制。 輸入以 MB 為單位的數據大小(MB)。 預設值為 50

如果在 ConfigurationTypeName 參數中指定的組態類型中定義數據大小限制,則會使用組態類型中的限制。 這個參數的值會被忽略。

Type:Nullable<T>[Double]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaximumReceivedObjectSizeMB

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

如果在 ConfigurationTypeName 參數中指定的組態類型中定義物件大小限制,則會使用組態類型的限制。 這個參數的值會被忽略。

Type:Nullable<T>[Double]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ModulesToImport

指定自動匯入會話組態的模組和嵌入式管理單元。 輸入模組和嵌入式管理單元名稱。

根據預設,只有 Microsoft.PowerShell.Core 模組會匯入會話,但除非排除 Cmdlet,否則您可以使用 Import-ModuleAdd-PSSnapin Cmdlet 將模組和嵌入式管理單元新增至會話。

除了工作階段組態檔 (New-PSSessionConfigurationFile) 中指定的模組之外,也會匯入此參數值中指定的模組。 不過,會話組態檔中的設定可以隱藏模組導出的命令,或防止使用者使用它們。

此參數值中指定的模組會以 Cmdlet 的 Register-PSSessionConfiguration ModulesToImport 參數取代指定的模組清單。

此參數是在 PowerShell 3.0 中引進的。

Type:Object[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

指定您想要變更的工作階段組態名稱。

您無法使用此參數來變更工作階段組態的名稱。

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-NoServiceRestart

不會重新啟動 WinRM 服務,並隱藏重新啟動服務的提示。

根據預設,當您執行 Set-PSSessionConfiguration時,系統會提示您重新啟動 WinRM 服務,讓新的工作階段設定生效。 在 WinRM 服務重新啟動之前,新的工作階段設定無效。

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

指定工作階段組態檔的路徑 (.pssc),例如 Cmdlet 所建立的路徑 New-PSSessionConfigurationFile 。 如果您省略路徑,預設值為目前目錄。

如需如何修改會話組態檔的詳細資訊,請參閱 Cmdlet 的說明 New-PSSessionConfigurationFile 主題。

此參數是在 PowerShell 3.0 中引進的。

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-PSVersion

指定使用此工作階段設定之工作階段中的 PowerShell 版本。

此參數的值優先於會話組態檔中的 PowerShellVersion 索引鍵值

此參數是在 PowerShell 3.0 中引進的。

Type:Version
Aliases:PowerShellVersion
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunAsCredential

指定工作階段中命令的認證。 根據預設,命令會以目前使用者的許可權執行。

此參數是在 PowerShell 3.0 中引進的。

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SecurityDescriptorSddl

為組態指定不同的安全性描述元定義語言 (SDDL) 字串。

此字串會決定使用新工作階段組態所需的許可權。 若要在會話中使用會話設定,用戶必須至少有 Execute(Invoke) 設定的許可權。

若要使用組態的預設安全性描述元,請輸入空字串 ("") 或的值 $Null。 預設值是磁碟驅動器中的 WSMan: 根 SDDL。

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

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SessionTypeOption

指定工作階段組態的類型特定選項。 輸入工作階段類型選項物件,例如 Cmdlet 傳回的 New-PSWorkflowExecutionOption PSWorkflowExecutionOption 物件。

使用會話設定的會話選項取決於會話選項的值和會話組態選項。 除非指定,否則在會話中設定的選項,例如使用 New-PSSessionOption Cmdlet,優先於會話組態中設定的選項。 不過,會話選項值不能超過會話組態中設定的最大值。

此參數是在 PowerShell 3.0 中引進的。

Type:PSSessionTypeOption
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ShowSecurityDescriptorUI

使用此參數時,Cmdlet 會開啟屬性表,以協助您為會話設定建立新的 SDDL。 屬性表會出現在執行 命令之後 Set-PSSessionConfiguration ,然後重新啟動 WinRM 服務。

當您將許可權設定為組態時,請記住,使用者至少 Execute(Invoke) 必須有許可權才能在會話中使用會話組態。

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-StartupScript

指定組態的啟動文稿。 輸入 PowerShell 腳本的完整路徑。 指定的文稿會在使用會話組態的新會話中執行。

若要從會話組態中刪除啟動腳本,請輸入空字串 ("") 或的值 $Null

您可以使用啟動文稿進一步設定使用者工作階段。 如果腳本產生錯誤,即使是非終止錯誤,也不會建立會話,而且 New-PSSession 命令會失敗。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ThreadApartmentState

指定要使用之線程模組的 Apartment 狀態。 可接受的值為:

  • Unknown
  • MTA
  • STA
Type:ApartmentState
Accepted values:STA, MTA, Unknown
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ThreadOptions

指定組態中的線程選項設定。 此設定會定義在會話中執行命令時,線程的建立和使用方式。 此參數可接受的值為:

  • Default
  • ReuseThread
  • UseCurrentThread
  • UseNewThread

預設值是 UseCurrentThread

如需詳細資訊,請參閱 PSThreadOptions 列舉

Type:PSThreadOptions
Accepted values:Default, UseNewThread, ReuseThread, UseCurrentThread
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TransportOption

指定工作階段組態的傳輸選項。 輸入傳輸選項物件,例如 Cmdlet 傳回的 New-PSTransportOption WSManConfigurationOption 物件。

使用會話設定的會話選項取決於會話選項的值和會話組態選項。 除非指定,否則在會話中設定的選項,例如使用 New-PSSessionOption Cmdlet,優先於會話組態中設定的選項。 不過,會話選項值不能超過會話組態中設定的最大值。

此參數是在 PowerShell 3.0 中引進的。

Type:PSTransportOption
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseSharedProcess

只使用一個進程來裝載由相同用戶啟動的所有會話,並使用相同的會話設定。 根據預設,每個會話都會裝載在其自己的進程中。

此參數是在 PowerShell 3.0 中引進的。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

顯示執行 Cmdlet 後會發生的情況。 未執行 Cmdlet。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

None

您無法使用管線將物件傳送至此 Cmdlet。

輸出

WSManConfigLeafElement

備註

此 Cmdlet 僅適用於 Windows 平臺。

若要執行此 Cmdlet,請使用 [ 以系統管理員 身分執行] 選項啟動 PowerShell。

Cmdlet Set-PSSessionConfiguration 不會變更組態名稱,而且 WSMan 提供者不支援 Rename-Item Cmdlet。 若要變更會話組態的名稱,請使用 Unregister-PSSessionConfiguration Cmdlet 來刪除組態,然後使用 Register-PSSessionConfiguration Cmdlet 來建立和註冊新的會話組態。

您可以使用 Set-PSSessionConfiguration Cmdlet 來變更預設 Microsoft.PowerShellMicrosoft.PowerShell32 工作階段組態。 它們不受保護。 若要還原為預設會話組態的原始版本,請使用 Unregister-PSSessionConfiguration Cmdlet 來刪除預設會話組態,然後使用 Enable-PSRemoting Cmdlet 還原它。

會話組態對象的屬性會隨著會話組態和這些選項的值所設定的選項而有所不同。 此外,使用會話組態檔的會話組態也有其他屬性。

您可以使用磁碟驅動器中的 WSMan: 命令來變更工作階段組態的屬性。 不過,您無法在 PowerShell 2.0 中使用 WSMan: 磁碟驅動器來變更 PowerShell 3.0 中引進的會話組態屬性,例如 OutputBufferingMode。 Windows PowerShell 2.0 命令不會產生錯誤,但它們無效。 若要變更 PowerShell 3.0 中引進的屬性,請使用 PowerShell 3.0 或更新版本中的 WSMan: 磁碟驅動器。