Receive-PSSession
針對已中斷連線的工作階段取得其命令結果
Syntax
Receive-PSSession
[-Session] <PSSession>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
[-Id] <Int32>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
[-ComputerName] <String>
[-ApplicationName <String>]
[-ConfigurationName <String>]
-Name <String>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
[-ComputerName] <String>
[-ApplicationName <String>]
[-ConfigurationName <String>]
-InstanceId <Guid>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
[-ConfigurationName <String>]
[-ConnectionUri] <Uri>
[-AllowRedirection]
-Name <String>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
[-ConfigurationName <String>]
[-ConnectionUri] <Uri>
[-AllowRedirection]
-InstanceId <Guid>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
-InstanceId <Guid>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Receive-PSSession
-Name <String>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
此 Cmdlet 僅適用於 Windows 平臺。
Cmdlet Receive-PSSession
會取得在 PowerShell 工作階段中執行的命令結果, (已中斷連線的 PSSession) 。 如果會話目前已連線, Receive-PSSession
取得會話中斷連線時所執行的命令結果。 如果會話仍然中斷連線, Receive-PSSession
請連線到會話、繼續暫停的任何命令,並取得在會話中執行的命令結果。
此 Cmdlet 是在 PowerShell 3.0 中引進。
除了 或 之外,您也可以使用 Receive-PSSession
或 ,而不是 Connect-PSSession
命令。
Receive-PSSession
可以連線到在其他會話或其他計算機上啟動的任何已中斷連線或重新連線的會話。
Receive-PSSession
適用於刻意使用 Disconnect-PSSession
Cmdlet 或 Invoke-Command
InDisconnectedSession 參數中斷連線的 PSSession。 或因網路中斷而意外中斷。
如果您使用 Receive-PSSession
Cmdlet 連線到沒有執行或暫停命令的工作階段, Receive-PSSession
請連線到作業階段,但不會傳回任何輸出或錯誤。
如需中斷連線工作階段功能的詳細資訊,請參閱 about_Remote_Disconnected_Sessions。
有些範例會使用展開來減少線條長度,並改善可讀性。 如需詳細資訊,請參閱 about_Splatting。
範例
範例 1:連線到 PSSession
這個範例會連線到遠端電腦上的會話,並取得在會話中執行的命令結果。
Receive-PSSession -ComputerName Server01 -Name ITTask
Receive-PSSession
指定具有 ComputerName 參數的遠端電腦。 Name 參數會識別 Server01 電腦上的 ITTask 工作階段。 此範例會取得在ITTask會話中執行的命令結果。
因為命令不使用 OutTarget 參數,所以結果會出現在命令行上。
範例 2:取得已中斷聯機會話上所有命令的結果
這個範例會取得兩部遠端計算機上所有已中斷聯機會話中執行的所有命令結果。
如果任何工作階段未中斷連線或未執行命令, Receive-PSSession
則不會連線到會話,也不會傳回任何輸出或錯誤。
Get-PSSession -ComputerName Server01, Server02 | Receive-PSSession
Get-PSSession
會使用 ComputerName 參數來指定遠端電腦。 物件會從管線向下傳送至 Receive-PSSession
。
範例 3:取得在會話中執行的腳本結果
此範例會 Receive-PSSession
使用 Cmdlet 來取得在遠端電腦會話中執行的腳本結果。
$parms = @{
ComputerName = "Server01"
Name = "ITTask"
OutTarget = "Job"
JobName = "ITTaskJob01"
Credential = "Domain01\Admin01"
}
Receive-PSSession @parms
Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 ITTaskJob01 Running True Server01
命令使用 ComputerName 與 Name 參數,識別已中斷連線的工作階段。
它會使用 OutTarget 參數搭配 Job 值,以直接 Receive-PSSession
將結果傳回為作業。 JobName 參數會指定重新聯機會話中作業的名稱。
Credential 參數Receive-PSSession
會使用網域管理員的許可權來執行命令。
輸出會顯示 Receive-PSSession
在目前會話中以作業的形式傳回結果。 若要取得作業結果,請使用 Receive-Job
命令
範例 4:在網路中斷后取得結果
此範例會 Receive-PSSession
使用 Cmdlet 在網路中斷中斷時取得作業的結果。 PowerShell 會在接下來四分鐘內自動嘗試每秒重新聯機會話一次,而且只有在四分鐘間隔中的所有嘗試都失敗時,才會放棄工作。
PS> $s = New-PSSession -ComputerName Server01 -Name AD -ConfigurationName ADEndpoint
PS> $s
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
8 AD Server01 Opened ADEndpoint Available
PS> Invoke-Command -Session $s -FilePath \\Server12\Scripts\SharedScripts\New-ADResolve.ps1
Running "New-ADResolve.ps1"
# Network outage
# Restart local computer
# Network access is not re-established within 4 minutes
PS> Get-PSSession -ComputerName Server01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backup Server01 Disconnected Microsoft.PowerShell None
8 AD Server01 Disconnected ADEndpoint None
PS> Receive-PSSession -ComputerName Server01 -Name AD -OutTarget Job -JobName AD
Job Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 ADJob Running True Server01
PS> Get-PSSession -ComputerName Server01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backup Server01 Disconnected Microsoft.PowerShell Busy
8 AD Server01 Opened ADEndpoint Available
Cmdlet New-PSSession
會在 Server01 計算機上建立會話,並將會話儲存在變數中 $s
。 $s
變數會顯示 [狀態] 為 [已開啟],且 [可用性] 為 [可用]。 這些值表示您已連線到會話,而且可以在會話中執行命令。
Cmdlet 會在 Invoke-Command
變數中的會話中 $s
執行腳本。 指令碼開始執行並傳回資料,但是網路中斷而中斷了工作階段。 使用者必須結束工作階段並重新啟動本機電腦。
當電腦重新啟動時,用戶會啟動PowerShell,並執行 Get-PSSession
命令來取得Server01電腦上的會話。 輸出顯示 AD 工作階段仍存在於 Server01 電腦上。 State 表示 AD 工作階段已中斷連線。 [無] 的可用性值表示會話未連線到任何用戶端會話。
Cmdlet 會 Receive-PSSession
重新連線到 AD 工作話,並取得在工作階段中執行的腳本結果。 此命令會使用 OutTarget 參數,在名為 ADJob 的作業中要求結果。 此命令會傳回作業物件,而輸出表示腳本仍在執行中。
Cmdlet Get-PSSession
可用來檢查作業狀態。 輸出會 Receive-PSSession
確認 Cmdlet 已重新連線到 AD 工作階段,現在已開啟並可供命令使用。 而且,腳本會繼續執行,並取得腳本結果。
範例 5:重新連線到已中斷連線的會話
此範例會 Receive-PSSession
使用 Cmdlet 重新連線到刻意中斷連線的會話,並取得在會話中執行的工作結果。
PS> $parms = @{
InDisconnectedSession = $True
ComputerName = "Server01", "Server02", "Server30"
FilePath = "\\Server12\Scripts\SharedScripts\Get-BugStatus.ps1"
Name = "BugStatus"
SessionOption = @{IdleTimeout = 86400000}
ConfigurationName = "ITTasks"
}
PS> Invoke-Command @parms
PS> Exit
PS> $s = Get-PSSession -ComputerName Server01, Server02, Server30 -Name BugStatus
PS> $s
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Disconnected ITTasks None
8 ITTask Server02 Disconnected ITTasks None
2 ITTask Server30 Disconnected ITTasks None
PS> $Results = Receive-PSSession -Session $s
PS> $s
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Opened ITTasks Available
8 ITTask Server02 Opened ITTasks Available
2 ITTask Server30 Opened ITTasks Available
PS> $Results
Bug Report - Domain 01
----------------------
ComputerName BugCount LastUpdated
-------------- --------- ------------
Server01 121 Friday, December 30, 2011 5:03:34 PM
Cmdlet 會在 Invoke-Command
三部遠端電腦上執行腳本。 因為腳本會收集並摘要來自多個資料庫的數據,所以腳本通常需要一段時間才能完成。 此命令會使用 InDisconnectedSession 參數來啟動腳本,然後立即中斷會話的連線。 SessionOption 參數會擴充已中斷聯機會話的 IdleTimeout 值。 中斷連線的會話會在中斷連線時被視為閑置。 請務必設定閑置逾時夠長的時間,讓命令可以完成,而且您可以重新連線到會話。 只有在您建立 PSSession 時,才能設定 IdleTimeout ,而且只有在中斷與 PSSession 的連線時才會變更它。 當您連線到 PSSession 或接收其結果時,您無法變更 IdleTimeout 值。 執行命令之後,用戶會結束PowerShell並關閉電腦。
下一天,用戶會繼續 Windows、啟動 PowerShell,並使用 Get-PSSession
來取得腳本執行所在的會話。 此命令會依計算機名稱、會話名稱和會話組態的名稱來識別會話,並將會話儲存在變數中 $s
。 變數的值 $s
隨即顯示,並顯示會話已中斷連線,但不會忙碌。
Cmdlet Receive-PSSession
會連線到變數中的 $s
會話,並取得其結果。
此命令會將結果儲存在變數中 $Results
。 變數 $s
隨即顯示,並顯示會話已連線並可供命令使用。
變數中的 $Results
腳本會顯示在PowerShell控制台中。 如果有任何結果未預期,用戶可以在會話中執行命令,以調查根本原因。
範例 6:在中斷連線的會話中執行作業
此範例顯示中斷聯機會話中執行的作業會發生什麼情況。
PS> $s = New-PSSession -ComputerName Server01 -Name Test
PS> $j = Invoke-Command -Session $s { 1..1500 | Foreach-Object {"Return $_"; sleep 30}} -AsJob
PS> $j
Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 Job1 Running True Server01
PS> $s | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Test Server01 Disconnected Microsoft.PowerShell None
PS> $j
Id Name State HasMoreData Location
-- ---- ----- ----------- --------
16 Job1 Disconnected True Server01
PS> Receive-Job $j -Keep
Return 1
Return 2
PS> $s2 = Connect-PSSession -ComputerName Server01 -Name Test
PS> $j2 = Receive-PSSession -ComputerName Server01 -Name Test
PS> Receive-Job $j
Return 3
Return 4
Cmdlet New-PSSession
會在 Server01 計算機上建立測試工作階段。 命令會將工作階段儲存於 $s
變數中。
Cmdlet 會在 Invoke-Command
變數中的會話中 $s
執行命令。 此命令會使用 AsJob 參數以作業的形式執行命令,並在目前的工作階段中建立作業物件。
此命令會傳回儲存在變數中的 $j
作業物件。 $j
變數會顯示作業物件。
變數中的 $s
會話物件會傳送至 管線, Disconnect-PSSession
而會話已中斷聯機。
變數 $j
隨即顯示,並顯示中斷變數中 $j
作業對象連接的效果。 工作狀態現在為「已中斷連線」。
會在 Receive-Job
變數中的 $j
作業上執行 。 輸出會顯示作業開始在會話之前傳回輸出,且作業已中斷連線。
Cmdlet Connect-PSSession
會在相同的用戶端會話中執行。 此命令會重新連線到 Server01 電腦上的 Test 工作階段,並將會話儲存在變數中 $s2
。
Cmdlet Receive-PSSession
會取得會話中執行之作業的結果。 因為命令是在相同的會話中執行,所以預設會以作業的形式傳回結果, Receive-PSSession
並重複使用相同的作業物件。 此命令會將作業儲存在變數中 $j2
。 Cmdlet Receive-Job
會取得變數中 $j
作業的結果。
參數
-AllowRedirection
指出此 Cmdlet 允許將此連線重新導向至替代的統一資源標識碼 (URI) 。
使用 ConnectionURI 參數時,遠端目的地可傳回重新導向至不同 URI 的指示。 根據預設,PowerShell 不會重新導向連線,但您可以使用此參數來重新導向連線。
您也可以變更 MaximumConnectionRedirectionCount 工作階段選項值,限制連線重新導向的次數。 使用 Cmdlet 的 New-PSSessionOption
MaximumRedirection 參數,或設定喜好設定變數的 $PSSessionOption
MaximumConnectionRedirectionCount 屬性。 預設值為 5。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ApplicationName
指定應用程式。 此 Cmdlet 只會連線到使用指定應用程式的作業階段。
輸入連線 URI 的應用程式名稱區段。 例如,在下列連線 URI 中,WSMan 是應用程式名稱: http://localhost:5985/WSMAN
。
工作階段的應用程式名稱儲存在工作階段的 Runspace.ConnectionInfo.AppName 屬性中。
參數的值是用來選取和篩選會話。 它不會變更會話所使用的應用程式。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Authentication
指定用來驗證命令中使用者認證的機制,以重新連線到已中斷連線的會話。 此參數可接受的值為:
- Default
- 基本資訊
- Credssp
- Digest
- Kerberos
- 交涉
- NegotiateWithImplicitCredential
預設值為 Default。
如需此參數值的詳細資訊,請參閱 AuthenticationMechanism 列舉。
警告
認證安全性支援提供者 (CredSSP) 驗證,其中會將使用者認證傳遞至要驗證的遠端電腦,是針對需要對多個資源進行驗證的命令所設計,例如存取遠端網路共用。 此機制會使得遠端作業的安全性風險變高。 若遠端電腦遭到入侵,傳遞給它的認證便可用來控制網路工作階段。
Type: | AuthenticationMechanism |
Accepted values: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
Default value: | Default |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CertificateThumbprint
指定具有連線至已中斷連線工作階段權限之使用者帳戶的數位公開金鑰憑證 (X509)。 請輸入憑證的憑證指紋。
憑證將用於用戶端憑證式驗證。 憑證只能對應至本機用戶帳戶,且不適用於網域帳戶。
若要取得憑證指紋,請使用 Get-Item
PowerShell Cert:
磁碟驅動器中的或 Get-ChildItem
命令。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ComputerName
指定儲存已中斷連線工作階段的電腦。 會話會儲存在位於伺服器端或接收連線結束的電腦上。 預設是本機電腦。
輸入一部計算機的 NetBIOS 名稱、IP 位址或完整功能變數名稱 (FQDN) 。
不允許通配符。 若要指定本機計算機,請輸入計算機名稱、點 () .
、 $env:COMPUTERNAME
或localhost。
Type: | String |
Aliases: | Cn |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ConfigurationName
指定工作階段組態的名稱。 此 Cmdlet 只會連線到使用指定工作階段組態的工作階段。
輸入工作階段設定的設定名稱或完整資源 URI。 若您僅指定設定名稱,則會在前面加上下列架構 URI:
http://schemas.microsoft.com/powershell
.
工作階段的設定名稱儲存在工作階段的 ConfigurationName 屬性中。
參數的值是用來選取和篩選會話。 它不會變更會話所使用的會話組態。
如需會話設定的詳細資訊,請參閱 about_Session_Configurations。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
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 |
-ConnectionUri
指定 URI,定義用來重新連線到已中斷聯機會話的連接端點。
此 URI 必須是完整的 URI。 字串格式如下所示:
<Transport>://<ComputerName>:<Port>/<ApplicationName>
預設值如下:
http://localhost:5985/WSMAN
如果您未指定連線 URI,您可以使用 UseSSL、 ComputerName、 Port 和 ApplicationName 參數來指定連線 URI 值。
URI 的 Transport 區段有效值為 HTTP 與 HTTPS。 如果您使用傳輸區段指定連線 URI,但未指定埠,則會使用標準埠建立會話:80 表示 HTTP,而 HTTPS 則為 443。 若要使用PowerShell遠端處理的預設埠,請指定 HTTP 的埠 5985 或 HTTPS 的埠 5986。
如果目的地計算機將連線重新導向至不同的 URI,除非您在 命令中使用 AllowRedirection 參數,否則 PowerShell 會防止重新導向。
Type: | Uri |
Aliases: | URI, CU |
Position: | 0 |
Default value: | http://localhost:5985/WSMAN |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Credential
指定具有連線至已中斷連線工作階段權限的使用者帳戶。 預設為目前使用者。
輸入用戶名稱,例如User01或Domain01\User01,或輸入 Cmdlet 所產生的 Get-Credential
PSCredential 物件。 如果您輸入使用者名稱,系統會提示您輸入密碼。
認證會儲存在 PSCredential 物件中,密碼會儲存為 SecureString。
注意
如需 SecureString 數據保護的詳細資訊,請參閱 SecureString 有多安全?。
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
指定已中斷連線之會話的標識碼。 只有在已中斷連線的會話先前已連線到目前的會話時, Id 參數才能運作。
當會話儲存在本機計算機上,但未連線到目前的會話時,此參數是有效的,但無效。
Type: | Int32 |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InstanceId
指定已中斷連線工作階段的執行個體識別碼。 實例標識碼是 GUID,可唯一識別本機或遠端電腦上的 PSSession 。 實例標識碼會儲存在 PSSession 的 InstanceID 屬性中。
Type: | Guid |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-JobName
指定傳回之作業 Receive-PSSession
的易記名稱。
Receive-PSSession
當 OutTarget 參數的值是 Job,或在中斷連線的會話中執行的作業是在目前工作階段中啟動時,就會傳回作業。
如果在中斷連線的會話中執行的作業已在目前會話中啟動,PowerShell 會重複使用會話中的原始作業物件,並忽略 JobName 參數的值。
如果在中斷連線的會話中執行的作業在不同的會話中啟動,PowerShell 會建立新的作業物件。 它會使用預設名稱,但是您可以使用此參數來變更名稱。
如果 OutTarget 參數的預設值或明確值不是 Job,命令會成功,但 JobName 參數沒有作用。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
指定已中斷連線工作階段的好記名稱。
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OutTarget
決定如何傳回工作階段結果。 此參數可接受的值為:
- 作業。 以非同步方式,傳回工作物件中的結果。 您可以使用 JobName 參數,指定工作的名稱或新名稱。
- 主機。 將結果傳回命令列 (同步)。 若正在繼續命令,或結果包含大量物件,則回應可能會延遲。
OutTarget 參數的預設值為 Host。 如果在目前會話中啟動在中斷聯機會話中收到的命令, OutTarget 參數的預設值就是命令啟動所在的表單。 如果命令是以作業的形式啟動,則預設會以作業的形式傳回。 否則,預設會傳回主機程式。
主機程式在命令列顯示傳回的物件時,通常不會有延遲,但是也可能不同。
Type: | OutTarget |
Accepted values: | Default, Host, Job |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Port
指定用來重新連線到會話的遠端電腦網路埠。 若要連線到遠端電腦,它必須接聽連線所使用的埠。 默認埠為 5985,這是 HTTP 的 WinRM 連接埠,而 5986 是 HTTPS 的 WinRM 連接埠。
在使用替代埠之前,您必須在遠端電腦上設定 WinRM 接聽程式,以接聽該埠。 若要設定接聽程式,請在PowerShell提示字元中輸入下列兩個命令:
Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse
New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>
除非必要,否則請勿使用 Port 參數。 命令中設定的埠會套用至命令執行所在的所有計算機或會話。 替代的連接埠設定可能使得命令無法在全部電腦上執行。
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Session
指定已中斷連線的工作階段。 輸入包含 PSSession 的變數,或建立或取得 PSSession 的命令,例如 Get-PSSession
命令。
Type: | PSSession |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SessionOption
指定工作階段的進階選項。 輸入 SessionOption 物件,例如您使用 Cmdlet 建立的物件 New-PSSessionOption
,或索引鍵為會話選項名稱的哈希表,而值是會話選項值。
如果已設定,選項的預設值取決於喜好設定變數的值 $PSSessionOption
。 否則,將以工作階段設定中設定的選項建立預設值。
會話選項值優先於在喜好設定變數和會話組態中設定 $PSSessionOption
的會話預設值。 不過,它們不會優先於會話組態中設定的最大值、配額或限制。
如需包含預設值的工作階段選項描述,請參閱 New-PSSessionOption
。 如需 $PSSessionOption 喜好設定變數的相關信息,請參閱 about_Preference_Variables。 如需會話設定的詳細資訊,請參閱 about_Session_Configurations。
Type: | PSSessionOption |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseSSL
指出此 Cmdlet 使用安全套接字層 (SSL) 通訊協定連線到已中斷連線的會話。 根據預設,不會使用 SSL。
WS-Management 加密透過網路傳輸的所有PowerShell內容。 UseSSL 為額外的保護,可使用 HTTPS 連線取代 HTTP 連線來傳送資料。
如果您在用於命令的埠上使用此參數,且 SSL 無法使用,命令會失敗。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
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 |
輸入
您可以使用管線將會話物件傳送至此 Cmdlet,例如 Cmdlet 所 Get-PSSession
傳回的物件。
您可以使用管線將會話標識碼傳送至此 Cmdlet。
您可以使用管線傳送此 Cmdlet 的作業階段實例識別碼。
您可以使用管線將會話名稱傳送至此 Cmdlet。
輸出
如果 OutTarget 參數的值或預設值為 Job
, Receive-PSSession
則會傳回作業物件。
如果有任何命令,此 Cmdlet 會傳回在中斷聯機會話中執行的命令結果。
備註
PowerShell 包含下列的 Receive-PSSession
別名:
- 所有平台:
rcsn
此 Cmdlet 僅適用於 Windows 平臺。
Receive-PSSession
只會從已中斷連線的會話取得結果。 只有連線到或終止於執行 PowerShell 3.0 或更新版本的電腦可以中斷連線並重新連線的會話。
如果在已中斷連線的會話中執行的命令不會產生結果,或如果結果已傳回另一個會話, Receive-PSSession
則不會產生任何輸出。
工作階段的輸出緩衝模式會決定會話中的命令在中斷連線時如何管理輸出。 當會話的 OutputBufferingMode 選項值為 Drop 且輸出緩衝區已滿時,命令會開始刪除輸出。 Receive-PSSession
無法復原此輸出。 如需輸出緩衝模式選項的詳細資訊,請參閱 New-PSSessionOption 和 New-PSTransportOption Cmdlet 的說明文章。
當您連線到 PSSession 或接收結果時,您無法變更 PSSession 的閒置逾時值。 的 Receive-PSSession
SessionOption 參數會採用具有 IdleTimeout 值的 SessionOption 物件。 不過,當變數連接到 PSSession 或接收結果時,會忽略 SessionOption 物件的 IdleTimeout 值和變數的 IdleTimeout 值$PSSessionOption
。
- 當您建立 PSSession、使用
New-PSSession
或Invoke-Command
Cmdlet,以及中斷與 PSSession 的連線時,您可以設定並變更 PSSession 的閑置逾時。 - PSSession 的IdleTimeout屬性對於中斷連線的會話很重要,因為它會決定遠端電腦上維護中斷連線的會話多久。 已中斷連線的工作階段一被中斷連線,便被視為閒置,即使命令仍然在已中斷連線的工作階段中執行也是如此。
如果您使用 Cmdlet 的 Invoke-Command
AsJob 參數,在遠端會話中啟動作業,即使作業是在遠端會話中執行,作業物件還是會在目前的會話中建立。 如果您中斷遠端會話的連線,則目前會話中的作業物件會中斷與作業的連線。 作業物件包含傳回給它的任何結果,但不會在中斷連線的會話中收到作業的新結果。
如果不同的用戶端連線到包含執行中作業的工作階段,則原始工作階段中傳遞至原始作業對象的結果無法在新連接的工作階段中使用。 只有未傳遞至原始工作物件的結果,才能在重新連線的工作階段中使用。
同樣地,如果您在會話中啟動腳本,然後中斷與會話的連線,則腳本在中斷連線之前傳遞至會話的任何結果都不適用於另一個聯機到會話的用戶端。
若要防止您想要中斷連線之會話中的數據遺失,請使用 Cmdlet 的 Invoke-Command
InDisconnectedSession 參數。 因為此參數會避免將結果傳回目前工作階段,因此重新連線至工作階段時,所有結果都可供使用。
您也可以使用 Invoke-Command
Cmdlet 在遠端會話中執行 Start-Job
命令,以防止資料遺失。 在此狀況下,工作物件將建立於遠端工作階段中。 您無法使用 Receive-PSSession
Cmdlet 來取得作業結果。 請改用 Connect-PSSession
Cmdlet 連線到工作階段,然後使用 Invoke-Command
Cmdlet 在工作階段中執行 Receive-Job
命令。
當包含執行中作業的會話已中斷連線,然後重新連線時,只有在作業中斷連線並重新連線到相同會話時,才會重複使用原始作業物件,而要重新連線的命令不會指定新的作業名稱。 如果會話重新連線到不同的用戶端會話或指定新的作業名稱,PowerShell 會為新的會話建立新的作業物件。
當您中斷 PSSession 的連線時,會話狀態為 [已中斷連線],可用性為 [無]。
- State 屬性的值是相對於目前工作階段。 [已中斷連線] 的值表示 PSSession 未連線到目前的會話。 不過,這並不表示 PSSession 已中斷與所有會話的連線。 它可能連線不同的工作階段。 若要判斷是否可以連線或重新連線工作階段,請使用 Availability 屬性。
- Availability 值為 None 表示您可以連線工作階段。 [忙碌] 的值表示您無法連線到 PSSession ,因為它已連線到另一個會話。
- 如需會話之 State 屬性值的詳細資訊,請參閱 RunspaceState。
- 如需會話 可用性 屬性值的詳細資訊,請參閱 RunspaceAvailability。