共用方式為


Receive-PSSession

取得中斷聯機會話中命令的結果

語法

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]
       -InstanceId <Guid>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-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
       -InstanceId <Guid>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       -Name <String>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Description

Receive-PSSession Cmdlet 會取得在 Windows PowerShell 會話中執行的命令結果(PSSession)。 如果會話目前已連線,Receive-PSSession 取得會話中斷連線時正在執行的命令結果。 如果會話仍然中斷連線,Receive-PSSession 連線到會話、繼續暫停的任何命令,並取得會話中執行的命令結果。

除了 或 ,您也可以使用 Receive-PSSession,而不是 Connect-PSSession 命令。 Receive-PSSession 可以連線到任何已中斷連線或重新連線的會話。 其中包括在其他工作階段或其他電腦上啟動的工作階段。

Receive-PSSession 適用於刻意中斷連線的 PSSessions,例如使用 Disconnect-PSSession Cmdlet 或 InDisconnectedSession Invoke-Command 參數,或無意中發生網路中斷。

如果您使用 Receive-PSSession Cmdlet 連線到沒有執行或暫停命令的會話,Receive-PSSession 連線到會話,但不會傳回任何輸出或錯誤。

如需中斷聯機會話功能的詳細資訊,請參閱 about_Remote_Disconnected_Sessions

此 Cmdlet 已在 Windows PowerShell 3.0 中引進。

範例

範例 1:連線到 PSSession

PS C:\> Receive-PSSession -ComputerName Server01 -Name ITTask

此命令會使用 Receive-PSSession Cmdlet 連線到 Server01 計算機上的 ITTask 工作階段,並取得會話中執行的命令結果。

因為命令不會使用 OutTarget 參數,因此結果會出現在命令行。

範例 2:取得已中斷聯機會話上所有命令的結果

PS C:\> Get-PSSession -ComputerName Server01, Server02 | Receive-PSSession

此命令會取得 Server01 和 Server02 計算機上所有中斷聯機會話中執行之所有命令的結果。

如果有任何會話未中斷連線或未執行命令,Receive-PSSession 不會連線到會話,也不會傳回任何輸出或錯誤。

範例 3:取得在會話中執行的腳本結果

PS C:\> Receive-PSSession -ComputerName Server01 -Name ITTask -OutTarget Job -JobName ITTaskJob01 -Credential Domain01\Admin01
Id     Name            State         HasMoreData     Location
--     ----            -----         -----------     --------
16     ITTaskJob01     Running       True            Server01

此命令會使用 Receive-PSSession Cmdlet 來取得 Server01 計算機上 ITTask 會話中執行的腳本結果。

此命令會使用 ComputerNameName 參數來識別中斷連線的會話。 它會使用具有 Job 值的 OutTarget 參數,將 Receive-PSSession 導向 Receive-PSSession,以傳回結果做為作業,JobName 參數,以在重新連線的會話中指定作業的名稱。

此命令會使用 Credential 參數,使用網域系統管理員的許可權來執行 Receive-PSSession 命令。

輸出顯示 Receive-PSSession 傳回結果做為目前會話中的作業。 若要取得作業結果,請使用 Receive-Job 命令

範例 4:在網路中斷后取得結果

The first command uses the New-PSSession cmdlet to create a session on the Server01 computer. The command saves the session in the $s variable.The second command gets the session in the $s variable. Notice that the **State** is Opened and the **Availability** is Available. These values indicate that you are connected to the session and can run commands in the session.
PS C:\> $s = New-PSSession -ComputerName Server01 -Name AD -ConfigurationName ADEndpoint
PS C:\> $s

Id Name    ComputerName    State         ConfigurationName     Availability
 -- ----    ------------    -----         -----------------     ------------
  8 AD      Server01        Opened        ADEndpoint            Available

The third command uses the Invoke-Command cmdlet to run a script in the session in the $s variable.The script begins to run and return data, but a network outage occurs that interrupts the session. The user has to exit the session and restart the local computer.
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

When the computer restarts, the user starts Windows PowerShell and runs a Get-PSSession command to get sessions on the Server01 computer. The output shows that the AD session still exists on the Server01 computer. The **State** indicates that it is disconnected and the **Availability** value, None, indicates that it is not connected to any client sessions.
PS C:\> Get-PSSession -ComputerName Server01

 Id Name    ComputerName    State         ConfigurationName     Availability
 -- ----    ------------    -----         -----------------     ------------
  1 Backup  Server01        Disconnected  Microsoft.PowerShell          None
  8 AD      Server01        Disconnected  ADEndpoint                   None


The fifth command uses the **Receive-PSSession** cmdlet to reconnect to the AD session and get the results of the script that ran in the session. The command uses the *OutTarget* parameter to request the results in a job named ADJob.The command returns a job object. The output indicates that the script is still running.
PS C:\> Receive-PSSession -ComputerName Server01 -Name AD -OutTarget Job -JobName AD
Job Id     Name      State         HasMoreData     Location
--     ----      -----         -----------     --------
16     ADJob     Running       True            Server01

The sixth command uses the Get-PSSession cmdlet to check the job state. The output confirms that, in addition to resuming script execution and getting the script results, the **Receive-PSSession** cmdlet reconnected to the AD session, which is now open and available for commands.
PS C:\> Get-PSSession -ComputerName Server01
Id Name    ComputerName    State         ConfigurationName     Availability
-- ----    ------------    -----         -----------------     ------------
 1 Backup  Server01        Disconnected  Microsoft.PowerShell          Busy
 8 AD      Server01        Opened        ADEndpoint                Available

此範例使用 Receive-PSSession Cmdlet,在網路中斷中斷會話連線之後取得作業的結果。 Windows PowerShell 會在接下來四分鐘內自動嘗試每秒重新聯機會話一次,且只有在四分鐘間隔中的所有嘗試都失敗時,才會放棄工作。

範例 5:重新連線到已中斷連線的會話

The first command uses the Invoke-Command cmdlet to run a script on the three remote computers. Because the scripts gathers and summarize data from multiple databases, it often takes the script an extended time to finish. The command uses the *InDisconnectedSession* parameter, which starts the scripts and then immediately disconnects the sessions.The command uses the *SessionOption* parameter to extend the **IdleTimeout** value of the disconnected session. Disconnected sessions are considered to be idle from the moment they are disconnected, so it is important to set the idle time-out for long enough that the commands can complete and you can reconnect to the session, if necessary. You can set the **IdleTimeout** only when you create the **PSSession** and change it only when you disconnect from it. You cannot change the **IdleTimeout** value when you connect to a **PSSession** or receiving its results.After running the command, the user exits Windows PowerShell and closes the computer .
PS C:\> Invoke-Command -InDisconnectedSession -ComputerName Server01, Server02, Server30 -FilePath \\Server12\Scripts\SharedScripts\Get-BugStatus.ps1 -Name BugStatus -SessionOption @{IdleTimeout = 86400000} -ConfigurationName ITTasks# Exit

# Start Windows PowerShell on a different computer.

On the next day, the user resumes Windows and starts Windows PowerShell. The second command uses the Get-PSSession cmdlet to get the sessions in which the scripts were running. The command identifies the sessions by the computer name, session name, and the name of the session configuration and saves the sessions in the $s variable.The third command displays the value of the $s variable. The output shows that the sessions are disconnected, but not busy, as expected.
PS C:\> $s = Get-PSSession -ComputerName Server01, Server02, Server30 -Name BugStatus
 PS C:\> $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


The fourth command uses the **Receive-PSSession** cmdlet to connect to the sessions in the $s variable and get their results. The command saves the results in the $Results variable.Another display of the $s variable shows that the sessions are connected and available for commands.
PS C:\> $Results = Receive-PSSession -Session $s
PS C:\> $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


The fifth command displays the script results in the $Results variable. If any of the results are unexpected, the user can run commands in the sessions to investigate.
PS C:\> $Results
Bug Report - Domain 01
----------------------
ComputerName          BugCount          LastUpdated
--------------        ---------         ------------
Server01              121               Friday, December 30, 2011 5:03:34 PM

此範例會使用 Receive-PSSession Cmdlet 重新連線到刻意中斷連線的會話,並取得會話中執行的工作結果。

範例 6:在中斷連線的會話中執行作業

The first command uses the New-PSSession cmdlet to create the Test session on the Server01 computer. The command saves the session in the $s variable.
PS C:\> $s = New-PSSession -ComputerName Server01 -Name Test

The second command uses the Invoke-Command cmdlet to run a command in the session in the $s variable. The command uses the *AsJob* parameter to run the command as a job and to create the job object in the current session. The command returns a job object, which is saved in the $j variable.The third command displays the job object in the $j variable.
PS C:\> $j = Invoke-Command -Session $s { 1..1500 | Foreach-Object {"Return $_"; sleep 30}} -AsJob

PS C:\> $j
Id     Name           State         HasMoreData     Location
--     ----           -----         -----------     --------
16     Job1           Running       True            Server01

The fourth command disconnects the session in the $s variable.
PS C:\> $s | Disconnect-PSSession
Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
1  Test   Server01        Disconnected  Microsoft.PowerShell  None

The fifth command shows the effect of disconnecting on the job object in the $j variable. The job state is now Disconnected.
PS C:\> $j
Id     Name           State         HasMoreData     Location
--     ----           -----         -----------     --------
16     Job1           Disconnected  True            Server01

The sixth command runs a Receive-Job command on the job in the $j variable. The output shows that the job began to return output before the session and the job were disconnected.
PS C:\> Receive-Job $j -Keep
Return 1
Return 2

The seventh command is run in the same client session. The command uses the Connect-PSSession cmdlet to reconnect to the Test session on the Server01 computer and saves the session in the $s2 variable.
PS C:\> $s2 = Connect-PSSession -ComputerName Server01 -Name Test

The eighth command uses the **Receive-PSSession** cmdlet to get the results of the job that was running in the session. Because the command is run in the same session, **Receive-PSSession** returns the results as a job by default and reuses the same job object. The command saves the job in the $j2 variable.The ninth command uses the **Receive-Job** cmdlet to get the results of the job in the $j variable.
PS C:\> $j2 = Receive-PSSession -ComputerName Server01 -Name Test

PS C:\> Receive-Job $j
Return 3
Return 4

此範例示範在中斷聯機會話中執行的作業會發生什麼事。

參數

-AllowRedirection

指出此 Cmdlet 允許將此連線重新導向至替代的統一資源識別碼 (URI)。

當您使用 ConnectionURI 參數時,遠端目的地可以傳回指示以重新導向至不同的 URI。 根據預設,Windows PowerShell 不會重新導向連線,但您可以使用此參數來重新導向連線。

您也可以變更 MaximumConnectionRedirectionCount 會話選項值,來限制重新導向連線的次數。 使用 New-PSSessionOption Cmdlet 的 MaximumRedirection 參數,或設定$PSSessionOption喜好設定變數的 MaximumConnectionRedirectionCount 屬性。 預設值為 5。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-ApplicationName

指定應用程式。 此 Cmdlet 只會連線到使用指定應用程式的作業階段。

輸入連線 URI 的應用程式名稱區段。 例如,在下列連線 URI 中,應用程式名稱為 WSMan:https://localhost:5985/WSMAN。 會話的應用程式名稱會儲存在會話的 Runspace.ConnectionInfo.AppName 屬性中。

此參數的值是用來選取和篩選會話。 它不會變更會話所使用的應用程式。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-Authentication

指定用來驗證命令中使用者認證的機制,以重新連線到已中斷連線的會話。 此參數可接受的值為:

  • 違約
  • 基本
  • Credssp
  • 消化
  • Kerberos
  • 談判
  • NegotiateWithImplicitCredential

預設值為 Default。

如需此參數值的詳細資訊,請參閱 AuthenticationMechanism 列舉

謹慎

認證安全性支援提供者 (CredSSP) 驗證,其中使用者認證會傳遞至要驗證的遠端電腦,是針對需要驗證多個資源的命令所設計,例如存取遠端網路共用。 此機制會增加遠端作業的安全性風險。 如果遠端電腦遭到入侵,傳遞給它的認證可用來控制網路會話。

類型:AuthenticationMechanism
接受的值:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-CertificateThumbprint

指定具有連線到已中斷聯機會話之用戶帳戶的數位公鑰憑證 (X509)。 輸入憑證的憑證指紋。

憑證用於客戶端憑證型驗證。 它們只能對應至本機用戶帳戶。 它們不適用於網域帳戶。

若要取得憑證指紋,請使用 Windows PowerShell 憑證:磁碟驅動器中的 Get-Item 或 Get-ChildItem 命令。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-ComputerName

指定已中斷聯機會話儲存所在的計算機。 工作階段會儲存在位於伺服器端或接收連接端的電腦上。 預設值為本機計算機。

輸入 NetBIOS 名稱、IP 位址或一部電腦的完整功能變數名稱。 不允許通配符。 若要指定本機電腦,請輸入電腦名稱、localhost 或點 (.)

類型:String
別名:Cn
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-ConfigurationName

僅聯機到使用指定會話設定的會話。

輸入工作階段組態的組態名稱或完整資源URI。 如果您只指定組態名稱,則前面會加上下列架構 URI:https://schemas.microsoft.com/powershell。 會話的組態名稱會儲存在會話的 ConfigurationName 屬性中。

此參數的值是用來選取和篩選會話。 它不會變更會話所使用的會話組態。

如需工作階段組態的詳細資訊,請參閱 about_Session_Configurations

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

-Confirm

在執行 Cmdlet 之前,提示您進行確認。

類型:SwitchParameter
別名:cf
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-ConnectionUri

指定 URI,定義用來重新連線到已中斷聯機會話的連接端點。

URI 必須完整。 此字串格式如下所示:

<Transport>://<ComputerName>:<Port>/<ApplicationName>

預設值如下:

https://localhost:5985/WSMAN

如果您未指定連線 URI,您可以使用 UseSSLComputerNamePortApplicationName 參數來指定連線 URI 值。

URI 傳輸 區段的有效值為 HTTP 和 HTTPS。 如果您指定具有傳輸區段的連線 URI,但未指定埠,則會使用標準埠建立會話:80 代表 HTTP,而 HTTPS 則為 443。 若要使用 Windows PowerShell 遠端的預設埠,請針對 HTTP 指定埠 5985,或針對 HTTPS 指定埠 5986。

如果目的地計算機將連線重新導向至不同的 URI,除非您在命令中使用 AllowRedirection 參數,否則 Windows PowerShell 會防止重新導向。

類型:Uri
別名:URI, CU
Position:0
預設值:https://localhost:5985/WSMAN
必要:True
接受管線輸入:True
接受萬用字元:False

-Credential

指定有權連線到已中斷聯機會話的用戶帳戶。 預設值為目前的使用者。

輸入用戶名稱,例如User01或Domain01\User01。 或者,輸入 PSCredential 物件,例如 Get-Credential Cmdlet 所產生的物件。 如果您輸入使用者名稱,此 Cmdlet 會提示您輸入密碼。

類型:PSCredential
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Id

指定已中斷連線之會話的標識碼。 識別碼 參數僅適用於先前連線到目前會話的已中斷聯機會話時。

當會話儲存在本機計算機上,但未連線到目前的會話時,這個參數有效但無效。

類型:Int32
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-InstanceId

指定已中斷連線之會話的實例標識碼。

實例標識碼是 GUID,可唯一識別本機或遠端電腦上的 PSSession

實例標識符會儲存在 PSSessionInstanceID 屬性中。

類型:Guid
Position:Named
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

-JobName

指定 Receive-PSSession 傳回之作業的易記名稱。

Receive-PSSession 傳回作業時,OutTarget 參數的值為 Job,或正在中斷聯機會話中執行的工作已在目前會話中啟動。

如果在目前會話中啟動在中斷聯機會話中執行的工作,Windows PowerShell 會重複使用會話中的原始作業物件,並忽略 JobName 參數的值。

如果在中斷連線的會話中執行的作業在不同的會話中啟動,Windows PowerShell 會建立新的作業物件。 它會使用預設名稱,但您可以使用此參數來變更名稱。

如果 OutTarget 參數的預設值或明確值不是 Job,命令會成功,但 JobName 參數沒有作用。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Name

指定已中斷連線之會話的易記名稱。

類型:String
Position:Named
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

-OutTarget

決定如何傳回會話結果。 此參數可接受的值為:

  • 工作。 以異步方式傳回作業物件中的結果。 您可以使用 JobName 參數來指定作業的名稱或新名稱。
  • 主機。 將結果傳回命令行 (同步)。 如果命令正在繼續,或結果是由大量對象所組成,則回應可能會延遲。

OutTarget 參數的預設值為 Host。 不過,如果在目前會話中啟動在中斷聯機會話中接收的命令,OutTarget 參數的預設值就是命令啟動的格式。 如果命令以作業的形式啟動,預設會以作業的形式傳回。 否則,預設會傳回主機程式。

通常,主程式會在命令行上顯示傳回的物件,而不會延遲,但這種行為可能會有所不同。

類型:OutTarget
接受的值:Default, Host, Job
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Port

指定遠端電腦上用來重新連線到會話的網路埠。 若要連線到遠端電腦,遠端計算機必須接聽連線所使用的埠。 默認埠為 5985,這是 HTTP 的 WinRM 連接埠,而 5986 是 HTTPS 的 WinRM 連接埠。

使用替代埠之前,您必須在遠端電腦上設定 WinRM 接聽程式,以在該埠接聽。 若要設定接聽程式,請在 Windows PowerShell 提示字元中輸入下列兩個命令:

Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse

New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>

除非您必須,否則請勿使用 Port 參數。 命令中設定的埠會套用至命令執行所在的所有計算機或會話。 替代埠設定可能會防止命令在所有計算機上執行。

類型:Int32
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Session

指定已中斷連線的工作階段。 輸入變數,其中包含 PSSession 或建立或取得 PSSession的命令,例如 Get-PSSession 命令。

類型:PSSession
Position:0
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-SessionOption

指定工作階段的進階選項。 輸入 SessionOption 物件,例如您使用 New-PSSessionOption Cmdlet 建立的工作階段選項名稱,以及值是會話選項值的哈希表。

如果設定選項,選項的預設值取決於$PSSessionOption喜好設定變數的值。 否則,預設值是由會話組態中設定的選項所建立。

會話選項值優先於$PSSessionOption喜好設定變數和會話組態中設定的會話預設值。 不過,它們不會優先於會話設定中設定的最大值、配額或限制。

如需包含預設值的會話選項描述,請參閱New-PSSessionOption。 如需 $PSSessionOption 喜好設定變數的相關信息,請參閱 about_Preference_Variables。 如需工作階段組態的詳細資訊,請參閱 about_Session_Configurations

類型:PSSessionOption
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-UseSSL

指出此 Cmdlet 會使用安全套接字層 (SSL) 通訊協議來連線到已中斷連線的會話。 根據預設,不會使用 SSL。

WS-Management 會加密透過網路傳輸的所有 Windows PowerShell 內容。 UseSSL 是額外的保護,可跨 HTTPS 連線傳送數據,而不是 HTTP 連線。

如果您使用此參數,但在用於命令的埠上無法使用 SSL,則命令會失敗。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-WhatIf

顯示 Cmdlet 執行時會發生什麼事。 Cmdlet 未執行。

類型:SwitchParameter
別名:wi
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

PSSession

您可以使用管線將會話物件,例如 Get-PSSession Cmdlet 所傳回的工作階段物件傳送至此 Cmdlet。

Int32

您可以使用管線將會話標識碼傳送至此 Cmdlet。

Guid

您可以使用管線傳送此 Cmdlet 之工作階段的實例識別碼。

String

您可以使用管線將會話名稱傳送至此 Cmdlet。

輸出

System.Management.Automation.Job or PSObject

此 Cmdlet 會傳回在中斷聯機會話中執行的命令結果,如果有的話。 如果 OutTarget 參數的值或預設值為 Job,Receive-PSSession 傳回作業物件。 否則,它會傳回代表該命令結果的物件。

備註

  • Receive-PSSession 只會從已中斷連線的會話取得結果。 只有連線到或終止於執行 Windows PowerShell 3.0 或更新版本的電腦,才能中斷連線並重新連線。

  • 如果在中斷連線的會話中執行的命令不會產生結果,或如果結果已傳回另一個會話,Receive-PSSession 不會產生任何輸出。

  • 工作階段的輸出緩衝模式會決定會話中的命令在工作階段中斷連線時如何管理輸出。 當會話的 OutputBufferingMode 選項為 Drop 且輸出緩衝區已滿時,命令就會開始刪除輸出。 Receive-PSSession 無法復原此輸出。 如需輸出緩衝模式選項的詳細資訊,請參閱 New-PSSessionOption 和 New-PSTransportOption Cmdlet 的說明主題。

  • 當您連線到 PSSession 或接收結果時,您無法變更 PSSession 的閑置逾時值。 Receive-PSSessionSessionOption 參數會採用具有 IdleTimeout 值的 SessionOption 物件。 不過,IdleTimeoutSessionOption 物件的值,以及$PSSessionOption變數的 IdleTimeout 值,會在連接到 PSSession 或接收結果時忽略。

    您可以使用 New-PSSession 或 Invoke-Command Cmdlet,以及當您中斷與 PSSession中斷連線時,您可以設定並變更 PSSession 閑置逾時。

    PSSessionIdleTimeout 屬性對於中斷連線的會話至關重要,因為它會決定遠端電腦上維護中斷聯機會話的時間長度。 即使命令是在中斷連線的會話中執行,中斷連線的會話也會被視為閑置。

  • 如果您使用 Invoke-Command Cmdlet 的 AsJob 參數,在遠端會話中建立作業物件,即使作業是在遠端會話中執行也一樣。 如果您中斷遠端會話的連線,目前會話中的作業對象現在會中斷與作業的連線。 作業物件仍然包含傳回給它的任何結果,但不會從中斷連線的會話中接收作業的新結果。

    如果不同的用戶端連線到包含執行中作業的會話,則新聯機的會話中無法取得傳遞至原始會話中原始作業對象的結果。 只有未傳遞至原始作業對象的結果,才能在重新連線的會話中使用。

    同樣地,如果您在會話中啟動腳本,然後中斷與會話的連線,則腳本在中斷連線之前傳遞給會話的任何結果都不適用於連線至會話的另一個用戶端。

    若要防止您想要中斷連線之會話中的數據遺失,請使用 Invoke-Command Cmdlet 的 InDisconnectedSession 參數。 因為此參數會防止結果傳回至目前的會話,因此當會話重新連線時,所有結果都可以使用。

    您也可以使用 Invoke-Command Cmdlet 在遠端會話中執行 Start-Job 命令,以防止數據遺失。 在此情況下,作業物件會在遠程會話中建立。 您無法使用 Receive-PSSession Cmdlet 來取得作業結果。 請改用 Connect-PSSession Cmdlet 連線到會話,然後使用 Invoke-Command Cmdlet 在會話中執行 Receive-Job 命令。

  • 當包含執行中作業的會話已中斷連線,然後重新連線時,只有當作業中斷聯機並重新連線至相同會話時,才會重複使用原始作業物件,而要重新連線的命令不會指定新的作業名稱。 如果會話重新連線到不同的用戶端會話或指定新的作業名稱,Windows PowerShell 會為新的工作階段建立新的作業物件。

  • 當您中斷連線 PSSession時,會話狀態為 Disconnected 且可用性為 None。

    State 屬性的值相對於目前的會話。 因此,Disconnected 的值表示 PSSession 未連線到目前的會話。 不過,這並不表示 PSSession 與所有會話中斷連線。 它可能會連線到不同的會話。 若要判斷您是否可以連線或重新連線到會話,請使用 Availability 屬性。

    Availability 值 None 表示您可以連線到會話。 [忙碌] 的值表示您無法連線到 PSSession,因為它已連線到另一個會話。

    如需會話 State 屬性值的詳細資訊,請參閱 MSDN 連結庫中的 runspaceState 列舉

    如需會話之 Availability 屬性值的詳細資訊,請參閱 runspaceAvailability 列舉