共用方式為


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]
       -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 平臺上使用。

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

此 Cmdlet 已在 PowerShell 3.0 中引進。

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

Receive-PSSession 適用於 已刻意使用 Disconnect-PSSession Cmdlet 或 Invoke-CommandInDisconnectedSession 參數中斷聯機的 PSSess ions。 或無意間中斷網路中斷。

如果您使用 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

此命令會使用 ComputerNameName 參數來識別中斷連線的會話。 它會使用具有 Job 值的 OutTarget 參數,來指示 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

New-PSSession Cmdlet 會在 Server01 計算機上建立工作階段,並將會話儲存在 $s 變數中。 $s 變數會顯示已開啟 狀態,且 可用性 為 [可用]。 這些值表示您已連線到會話,而且可以在會話中執行命令。

Invoke-Command Cmdlet 會在 $s 變數的會話中執行腳本。 腳本會開始執行並傳回數據,但發生網路中斷會中斷會話。 用戶必須結束會話,然後重新啟動本機計算機。

當計算機重新啟動時,用戶會啟動PowerShell並執行 Get-PSSession 命令,以取得Server01電腦上的會話。 輸出顯示 Server01 計算機上仍然存在 AD 工作階段。 狀態 表示 AD 工作階段已中斷連線。 Availability 值為 None,表示會話未連線到任何用戶端會話。

Receive-PSSession Cmdlet 會重新連線到 AD 工作階段,並取得會話中執行的腳本結果。 命令會使用 OutTarget 參數來要求名為 ADJob作業的結果。 此命令會傳回作業物件,而輸出表示腳本仍在執行中。

Get-PSSession Cmdlet 可用來檢查作業狀態。 輸出會確認 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

Invoke-Command Cmdlet 會在三部遠端電腦上執行腳本。 因為腳本會收集並摘要來自多個資料庫的數據,所以腳本通常需要較長的時間才能完成。 此命令會使用 InDisconnectedSession 參數來啟動腳本,然後立即中斷會話的連線。 SessionOption 參數會擴充已中斷聯機會話的 IdleTimeout 值。 中斷聯機的會話會從中斷連線的那一刻起被視為閑置。 請務必設定閑置逾時足夠長的時間,讓命令可以完成,而且您可以重新連線到會話。 您只能在建立 PSSession 時,設定 IdleTimeout,而且只有在中斷連線時才會變更它。 當您連線到 PSSession 或接收其結果時,您無法變更 IdleTimeout 值。 執行命令之後,用戶會結束PowerShell並關閉電腦。

第二天,用戶會繼續 Windows、啟動 PowerShell,並使用 Get-PSSession 來取得腳本執行所在的會話。 命令會依計算機名稱、會話名稱和會話組態的名稱來識別會話,並將會話儲存在 $s 變數中。 $s 變數的值隨即顯示,並顯示會話已中斷連線,但不忙碌。

Receive-PSSession Cmdlet 會連線到 $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

New-PSSession Cmdlet 會在 Server01 計算機上建立測試工作階段。 命令會將會話儲存在 $s 變數中。

Invoke-Command Cmdlet 會在 $s 變數的會話中執行命令。 此命令會使用 AsJob 參數,以作業的形式執行命令,並在目前的會話中建立作業物件。 此命令會傳回儲存在 $j 變數中的作業物件。 $j 變數會顯示作業物件。

$s 變數中的會話物件會向下傳送至管線,以 Disconnect-PSSession 且會話已中斷連線。

$j 變數隨即顯示,並顯示中斷 $j 變數中作業對象中斷連接的效果。 作業狀態現在已中斷連線。

Receive-Job 會在 $j 變數的作業上執行。 輸出顯示作業在會話之前開始傳回輸出,且作業已中斷連線。

Connect-PSSession Cmdlet 會在相同的用戶端會話中執行。 命令會重新連線到 Server01 計算機上的測試工作階段,並將會話儲存在 $s2 變數中。

Receive-PSSession Cmdlet 會取得會話中執行之作業的結果。 因為命令是在相同的會話中執行,Receive-PSSession 預設會以作業的形式傳回結果,並重複使用相同的作業物件。 命令會將作業儲存在 $j2 變數中。 Receive-Job Cmdlet 會取得 $j 變數中作業的結果。

參數

-AllowRedirection

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

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

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

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

-ApplicationName

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

輸入連線 URI 的應用程式名稱區段。 例如,在下列連線 URI 中,WSMan 是應用程式名稱:http://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
預設值:Default
必要:False
接受管線輸入:False
接受萬用字元:False

-CertificateThumbprint

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

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

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

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

-ComputerName

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

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

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

-ConfigurationName

指定工作階段組態的名稱。 此 Cmdlet 只會連線到使用指定工作階段設定的工作階段。

輸入工作階段組態的組態名稱或完整資源URI。 如果您只指定組態名稱,則前面會加上下列架構 URI:

http://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>

預設值如下:

http://localhost:5985/WSMAN

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

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

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

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

-Credential

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

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

認證會儲存在 PSCredential 物件中,密碼會儲存為 secureString

注意

如需 SecureString 數據保護的詳細資訊,請參閱 SecureString 有多安全?

類型:PSCredential
Position:Named
預設值:Current user
必要: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 傳回之作業的易記名稱。

當 outTarget 參數的 值是 Job,或已在中斷聯機會話中執行的作業是在目前工作階段中啟動時, 會傳回作業。

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

如果在中斷連線的會話中執行的作業在不同的會話中啟動,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 接聽程式以接聽該埠。 若要設定接聽程式,請在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 會加密透過網路傳輸的所有PowerShell內容。 UseSSL 是額外的保護,可跨 HTTPS 連線傳送數據,而不是 HTTP 連線。

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

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

-WhatIf

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

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

輸入

PSSession

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

Int32

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

Guid

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

String

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

輸出

System.Management.Automation.Job or PSObject

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

備註

此 Cmdlet 僅適用於 Windows 平臺。

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

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

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

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

  • 當您使用 New-PSSessionInvoke-Command Cmdlet 建立 PSSession時,以及當您與 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 命令。

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

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

  • State 屬性的值相對於目前的會話。 已中斷連線的值表示 PSSession 未連線到目前的會話。 不過,這並不表示 PSSession 與所有會話中斷連線。 它可能會連線到不同的會話。 若要判斷您是否可以連線或重新連線到會話,請使用 Availability 屬性。
  • Availability 值 None 表示您可以連線到會話。 [忙碌] 的值表示您無法連線到 PSSession,因為它已連線到另一個會話。
  • 如需工作階段 State 屬性之值的詳細資訊,請參閱 runspaceState
  • 如需會話之 Availability 屬性值的詳細資訊,請參閱 runspaceAvailability