New-PSSessionOption
建立物件,其中包含 PSSession 的進階選項。
語法
New-PSSessionOption
[-MaximumRedirection <Int32>]
[-NoCompression]
[-NoMachineProfile]
[-Culture <CultureInfo>]
[-UICulture <CultureInfo>]
[-MaximumReceivedDataSizePerCommand <Int32>]
[-MaximumReceivedObjectSize <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-MaxConnectionRetryCount <Int32>]
[-ApplicationArguments <PSPrimitiveDictionary>]
[-OpenTimeout <Int32>]
[-CancelTimeout <Int32>]
[-IdleTimeout <Int32>]
[-ProxyAccessType <ProxyAccessType>]
[-ProxyAuthentication <AuthenticationMechanism>]
[-ProxyCredential <PSCredential>]
[-SkipCACheck]
[-SkipCNCheck]
[-SkipRevocationCheck]
[-OperationTimeout <Int32>]
[-NoEncryption]
[-UseUTF16]
[-IncludePortInSPN]
[<CommonParameters>]
Description
Cmdlet New-PSSessionOption
會建立物件,其中包含使用者管理會話的進階選項(PSSession)。 您可以使用 物件作為建立 PSSession 之 Cmdlet 的 SessionOption 參數值,例如 New-PSSession
、 Enter-PSSession
和 Invoke-Command
。
如果沒有參數, New-PSSessionOption
會產生物件,其中包含所有選項的預設值。 因為每個屬性都可以編輯,因此您可以使用產生的物件做為範本,併為企業建立標準選項物件。
您也可以將 SessionOption 物件儲存在喜好設定變數中$PSSessionOption
。 此變數的值會為會話選項建立新的預設值。 當會話未設定任何會話選項,且優先於會話組態中設定的選項時,它們就會有效,但是您可以在建立會話的 Cmdlet 中指定會話選項或 SessionOption 物件來覆寫這些選項。 如需喜好設定變數的詳細資訊 $PSSessionOption
,請參閱 about_Preference_Variables。
當您在建立 會話的 Cmdlet 中使用 SessionOption 物件時,會話選項值會優先於喜好設定變數和會話組態中 $PSSessionOption
設定之會話的預設值。 不過,它們不會優先於會話設定中設定的最大值、配額或限制。 如需工作階段設定的詳細資訊,請參閱 about_Session_Configurations。
範例
範例 1:建立預設會話選項
此命令會建立 具有預設值的 SessionOption 物件。
New-PSSessionOption
MaximumConnectionRedirectionCount : 5
NoCompression : False
NoMachineProfile : False
ProxyAccessType : IEConfig
ProxyAuthentication : Negotiate
ProxyCredential :
SkipCACheck : False
SkipCNCheck : False
SkipRevocationCheck : False
OperationTimeout : 00:03:00
NoEncryption : False
UseUTF16 : False
Culture :
UICulture :
MaximumReceivedDataSizePerCommand :
MaximumReceivedObjectSize :
ApplicationArguments :
OpenTimeout : 00:03:00
CancelTimeout : 00:01:00
IdleTimeout : 00:04:00
範例 2:使用會話選項物件設定會話
此範例示範如何使用 SessionOption 物件來設定會話。
$pso = New-PSSessionOption -Culture "fr-fr" -MaximumReceivedObjectSize 10MB
New-PSSession -ComputerName Server01 -SessionOption $pso
第一個命令會建立新的 SessionOption 物件,並將它儲存在變數的值中 $pso
。 第二個命令會 New-PSSession
使用 Cmdlet 在 Server01 遠端電腦上建立工作階段。 此命令會使用變數值$pso
中的 SessionOption 對象作為命令的 SessionOption 參數值。
範例 3:啟動互動式會話
此命令會 Enter-PSSession
使用 Cmdlet 來啟動與 Server01 計算機的互動式會話。
Enter-PSSession -ComputerName Server01 -SessionOption (New-PSSessionOption -NoEncryption -NoCompression)
SessionOption 參數的值是New-PSSessionOption
具有 NoEncryption 和 NoCompression 參數的命令。
New-PSSessionOption
命令會以括弧括住,以確保它在命令之前Enter-PSSession
執行。
範例 4:修改會話選項物件
此範例示範您可以修改 SessionOption 物件。 所有屬性都有讀取/寫入值。
$a = New-PSSessionOption
$a.OpenTimeout
Days : 0
Hours : 0
Minutes : 3
Seconds : 0
Milliseconds : 0
Ticks : 1800000000
TotalDays : 0.00208333333333333
TotalHours : 0.05
TotalMinutes : 3
TotalSeconds : 180
TotalMilliseconds : 180000
$a.UICulture = (Get-UICulture)
$a.OpenTimeout = (New-Timespan -Minutes 4)
$a.MaximumConnectionRedirectionCount = 1
$a
MaximumConnectionRedirectionCount : 1
NoCompression : False
NoMachineProfile : False
ProxyAccessType : IEConfig
ProxyAuthentication : Negotiate
ProxyCredential :
SkipCACheck : False
SkipCNCheck : False
SkipRevocationCheck : False
OperationTimeout : 00:03:00
NoEncryption : False
UseUTF16 : False
Culture :
UICulture : en-US
MaximumReceivedDataSizePerCommand :
MaximumReceivedObjectSize :
ApplicationArguments :
OpenTimeout : 00:04:00
CancelTimeout : 00:01:00
IdleTimeout : 00:04:00
使用此方法為您的企業建立標準會話對象,然後針對特定用途建立自定義版本的會話物件。
範例 5:建立喜好設定變數
此命令會 $PSSessionOption
建立喜好設定變數。
$PSSessionOption = New-PSSessionOption -OpenTimeOut 120000
$PSSessionOption
在工作階段中設定喜好設定變數時,它會在以New-PSSession
、 Enter-PSSession
和 Invoke-Command
Cmdlet 建立的工作階段中建立選項的預設值。
若要在所有 $PSSessionOption
會話中提供變數,請將它新增至 PowerShell 工作階段和 PowerShell 配置檔。
如需喜好設定變數的詳細資訊 $PSSessionOption
,請參閱 about_Preference_Variables。
如需配置檔的詳細資訊,請參閱 about_Profiles。
範例 6:滿足遠端會話設定的需求
此範例示範如何使用 SessionOption 對象來滿足遠端會話組態的需求。
$skipCN = New-PSSessionOption -SkipCNCheck
New-PSSession -ComputerName 171.09.21.207 -UseSSL -Credential Domain01\User01 -SessionOption $SkipCN
第一個命令會New-PSSessionOption
使用 Cmdlet 來建立具有 SkipCNCheck 屬性的 SessionOption 物件。 命令會將產生的會話物件儲存在變數中 $skipCN
。
第二個命令會 New-PSSession
使用 Cmdlet 在遠端電腦上建立新的工作階段。 $skipCN
Check 變數用於 SessionOption 參數的值。
由於電腦是由其IP位址所識別,因此 ComputerName 參數的值與用於安全套接字層 (SSL) 的憑證中任何一般名稱不符。 因此, 需要 SkipCNCheck 選項。
範例 7:讓自變數可供遠程會話使用
此範例示範如何使用 Cmdlet 的 New-PSSessionOption
ApplicationArguments 參數,讓遠端會話可以使用其他數據。
$team = @{Team="IT"; Use="Testing"}
$TeamOption = New-PSSessionOption -ApplicationArguments $team
$s = New-PSSession -ComputerName Server01 -SessionOption $TeamOption
Invoke-Command -Session $s {$PSSenderInfo.ApplicationArguments}
Name Value
---- -----
Team IT
Use Testing
PSVersionTable {CLRVersion, BuildVersion, PSVersion, WSManStackVersion...}
Invoke-Command -Session $s {
if ($PSSenderInfo.ApplicationArguments.Use -ne "Testing") {
.\logFiles.ps1
}
else {
"Just testing."
}
}
Just testing.
第一個命令會建立具有兩個索引鍵 的哈希表 Team 和 Use。 命令會將哈希表儲存在變數中 $team
。 如需有關雜湊表的詳細資訊,請參閱 about_Hash_Tables。
接下來,使用 ApplicationArguments 參數的 New-PSSessionOption
Cmdlet 會建立儲存在變數中的 $team
SessionOption 物件。 當建立會話選項物件時New-PSSessionOption
,它會自動將ApplicationArguments 參數值中的哈希表轉換成 PrimitiveDictionary,以便將數據可靠地傳輸至遠端會話。
Cmdlet New-PSSession
會在 Server01 計算機上啟動作業階段。 它會使用 SessionOption 參數,在變數中包含 $teamOption
選項。
Cmdlet Invoke-Command
會示範變數中的數據 $team
可供遠端會話中的命令使用。 數據會出現在自動變數的 $PSSenderInfo
ApplicationArguments 屬性中。
最後 Invoke-Command
顯示如何使用數據。
參數
-ApplicationArguments
指定 傳送至遠端會話的 PrimitiveDictionary 。 遠程會話中的命令和腳本,包括會話組態中的啟動腳本,可以在自動變數的 $PSSenderInfo
ApplicationArguments 屬性中找到此字典。 您可以使用此參數將資料傳送至遠端工作階段。
如需詳細資訊,請參閱 about_Hash_Tables、 about_Session_Configurations和 about_Automatic_Variables。
類型: | PSPrimitiveDictionary |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-CancelTimeout
決定 PowerShell 等候取消作業的時間長度(CTRL+C)在結束之前完成。 以毫秒為單位輸入值。
預設值為 60000
(一分鐘)。 值為 0
(零) 表示沒有逾時;命令會無限期地繼續。
類型: | Int32 |
別名: | CancelTimeoutMSec |
Position: | Named |
預設值: | 60000 |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Culture
指定要用於工作階段的文化特性。 以格式輸入文化特性名稱<languagecode2>-<country/regioncode2>
(例如ja-JP
)、包含 CultureInfo 物件的變數,或取得 CultureInfo 物件的命令。
默認值為 $Null
,而且操作系統中所設定的文化特性會在會話中使用。
類型: | CultureInfo |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-IdleTimeout
判斷如果遠端電腦未收到來自本機計算機的任何通訊,會話會保持開啟的時間長度。 這包括活動訊號訊號。 當間隔到期時,會話就會關閉。
如果您想要中斷連線並重新連線到會話,閑置逾時值非常重要。 只有當工作階段沒有逾時時,您才能重新連線。
以毫秒為單位輸入值。 最小值為 60000
(1 分鐘)。 最大值是會話組態的 MaxIdleTimeoutms 屬性值。 預設值 -1
不會設定閑置逾時。
會話會使用會話選項中設定的閑置逾時,如果有的話。 如果沒有設定 (-1
),會話會使用 會話組態的IdleTimeoutMs 屬性值,或WSMan殼層逾時值 (WSMan:\<ComputerName>\Shell\IdleTimeout
),以最短者為準。
如果會話選項中設定的閑置逾時超過 會話組態的 MaxIdleTimeoutMs 屬性值,則建立會話的命令會失敗。
默認 Microsoft.PowerShell 會話組態的 IdleTimeoutMs 值是7200000
毫秒(2 小時)。 其 MaxIdleTimeoutMs 值為 2147483647
毫秒(>24 天)。 WSMan 殼層閒置逾時 (WSMan:\<ComputerName>\Shell\IdleTimeout
) 的預設值為 7200000
毫秒(2 小時)。
從會話中斷連線或重新連線到會話時,會話的閑置逾時值也可以變更。 如需詳細資訊,請參閱 Disconnect-PSSession
和 Connect-PSSession
。
在 Windows PowerShell 2.0 中,IdleTimeout 參數的預設值是 240000
(4 分鐘)。
類型: | Int32 |
別名: | IdleTimeoutMSec |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-IncludePortInSPN
包括用於 Kerberos 驗證的服務主體名稱 (SPN) 中的埠號碼,例如 HTTP://<ComputerName>:5985
。 此選項可讓使用非預設SPN的客戶端,針對使用 Kerberos 驗證的遠端電腦進行驗證。
此選項是針對支援 Kerberos 驗證的多個服務在不同的使用者帳戶下執行的企業所設計。 例如,允許 Kerberos 驗證的 IIS 應用程式可能需要將預設 SPN 註冊到不同於電腦帳戶的用戶帳戶。 在這種情況下,PowerShell 遠端功能無法使用 Kerberos 進行驗證,因為它需要註冊到電腦帳戶的 SPN。 若要解決此問題,系統管理員可以建立不同的SPN,例如,使用 Setspn.exe
註冊到不同用戶帳戶,並可藉由在SPN中包含埠號碼來區分它們。
如需詳細資訊,請參閱 Setspn 概觀。
此參數是在 Windows PowerShell 3.0 中引進的。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-MaxConnectionRetryCount
指定當目前嘗試因網路問題而失敗時,PowerShell 嘗試連線到目標計算機的次數。 預設值是 5
。
已針對 PowerShell 5.0 版新增此參數。
類型: | Int32 |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-MaximumReceivedDataSizePerCommand
指定本機電腦可以在單一命令中從遠端電腦接收的最大位元組數目。 以位元組為單位輸入值。 根據預設,沒有數據大小限制。
此選項的設計目的是保護用戶端電腦上的資源。
類型: | Int32 |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-MaximumReceivedObjectSize
指定本機電腦可以從遠端電腦接收的物件大小上限。 此選項的設計目的是保護用戶端電腦上的資源。 以位元組為單位輸入值。
在 Windows PowerShell 2.0 中,如果您省略此參數,則沒有任何物件大小限制。 從 Windows PowerShell 3.0 開始,如果您省略此參數,預設值為 209715200
bytes (或 200MB
)。
類型: | Int32 |
Position: | Named |
預設值: | 209715200 |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-MaximumRedirection
判斷 PowerShell 在連線失敗之前,將連線重新導向至替代統一資源識別碼 (URI) 的次數。 預設值是 5
。 值 0
(零) 會防止所有重新導向。
只有在建立會話的命令中使用 AllowRedirection 參數時,才會在會話中使用這個選項。
類型: | Int32 |
Position: | Named |
預設值: | 5 |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-NoCompression
關閉會話中的封包壓縮。 壓縮會使用更多的處理器週期,但它會加快傳送速率。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-NoEncryption
關閉數據加密。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-NoMachineProfile
防止載入使用者的 Windows 使用者設定檔。 因此,會話可能會更快建立,但使用者特定的登錄設定、環境變數等專案和憑證無法在會話中使用。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-OpenTimeout
決定客戶端電腦等候建立會話連線的時間長度。 當間隔到期時,建立連線的命令會失敗。 以毫秒為單位輸入值。
預設值為 180000
(3 分鐘)。 值為 0
(零) 表示沒有逾時;命令會無限期地繼續。
類型: | Int32 |
別名: | OpenTimeoutMSec |
Position: | Named |
預設值: | 180000 (3 minutes) |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-OperationTimeout
決定 WinRM 在起始連線逾時之前,等候即時連線的正面連線測試的時間上限。如需 WinRM 的詳細資訊,請參閱 Windows 遠端管理檔。
OperationTimeout 不會對遠端會話中執行的命令或進程施加時間限制,而且不會影響 SSH 等其他遠端通訊協定。
預設值為 180000
(3 分鐘)。 值 0
(零) 表示沒有逾時。
類型: | Int32 |
別名: | OperationTimeoutMSec |
Position: | Named |
預設值: | 180000 (3 minutes) |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-OutputBufferingMode
決定當輸出緩衝區已滿時,命令輸出在中斷連線的會話中管理的方式。
如果未在工作階段或工作階段組態中設定輸出緩衝模式,預設值為 Block
。 使用者也可以在中斷會話連線時變更輸出緩衝模式。
如果您省略此參數,SessionOption 物件的 OutputBufferingMode 值為 None
。 或的值Block
Drop
會覆寫會話組態中設定的輸出緩衝模式傳輸選項。 此參數可接受的值為:
Block
. 當輸出緩衝區已滿時,執行會暫停,直到緩衝區清除為止。Drop
. 當輸出緩衝區已滿時,執行會繼續。 儲存新輸出時,會捨棄最舊的輸出。None
. 未指定輸出緩衝模式。
如需輸出緩衝模式傳輸選項的詳細資訊,請參閱 New-PSTransportOption
。
此參數是在 Windows PowerShell 3.0 中引進的。
類型: | OutputBufferingMode |
接受的值: | None, Drop, Block |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ProxyAccessType
判斷用來解析主機名的機制。 此參數可接受的值為:
IEConfig
WinHttpConfig
AutoDetect
NoProxyServer
None
預設值是 None
。
如需此參數值的相關信息,請參閱 ProxyAccessType 列舉。
類型: | ProxyAccessType |
接受的值: | None, IEConfig, WinHttpConfig, AutoDetect, NoProxyServer |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ProxyAuthentication
指定用於 Proxy 解析的驗證方法。 此參數可接受的值為:
Basic
Digest
Negotiate
預設值是 Negotiate
。
如需此參數值的詳細資訊,請參閱 AuthenticationMechanism 列舉。
類型: | AuthenticationMechanism |
接受的值: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
預設值: | Negotiate |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ProxyCredential
指定要用於 Proxy 驗證的認證。 輸入包含 PSCredential 物件的變數,或取得 PSCredential 物件的命令,例如Get-Credential
命令。 如果未設定此選項,則不會指定任何認證。
類型: | PSCredential |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-SkipCACheck
指定當它透過 HTTPS 連線時,用戶端不會驗證伺服器證書是由受信任的證書頒發機構單位 (CA) 簽署。
只有在使用其他機制信任遠端計算機時,才使用此選項,例如當遠端計算機是實體安全與隔離的網路一部分,或是遠端電腦在 WinRM 設定中列為受信任主機時。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-SkipCNCheck
指定伺服器的憑證一般名稱 (CN) 不需要符合伺服器的主機名。 此選項僅適用於使用 HTTPS 通訊協定的遠端作業。
只對受信任的電腦使用此選項。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-SkipRevocationCheck
不會驗證伺服器證書的撤銷狀態。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-UICulture
指定要用於會話的UI文化特性。
有效值包括:
- 格式的文化特性名稱
<languagecode2>-<country/regioncode2>
,例如ja-JP
- 包含 CultureInfo 物件的變數
- 取得 CultureInfo 物件的命令,例如
Get-Culture
預設值為 $null
,以及建立會話時在操作系統中設定的UI文化特性。
類型: | CultureInfo |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-UseUTF16
指出此 Cmdlet 會以 UTF16 格式編碼要求,而不是 UTF8 格式。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
None
您無法使用管線將物件傳送至此 Cmdlet。
輸出
備註
如果命令中未使用 SessionOption 參數來建立 PSSession,則如果已設定,會話選項會由喜好設定變數的$PSSessionOption
屬性值來決定。 如需變數的詳細資訊 $PSSessionOption
,請參閱 about_Preference_Variables。
會話組態對象的屬性會隨著會話組態和這些選項的值所設定的選項而有所不同。 此外,使用會話組態檔的會話組態也有其他屬性。
相關連結
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應