共用方式為


Receive-PSSession

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

語法

Session (預設值)

Receive-PSSession
    [-Session] <PSSession>
    [-OutTarget <OutTarget>]
    [-JobName <String>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Id

Receive-PSSession
    [-Id] <Int32>
    [-OutTarget <OutTarget>]
    [-JobName <String>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

ComputerSessionName

Receive-PSSession
    [-ComputerName] <String>
    -Name <String>
    [-ApplicationName <String>]
    [-ConfigurationName <String>]
    [-OutTarget <OutTarget>]
    [-JobName <String>]
    [-Credential <PSCredential>]
    [-Authentication <AuthenticationMechanism>]
    [-CertificateThumbprint <String>]
    [-Port <Int32>]
    [-UseSSL]
    [-SessionOption <PSSessionOption>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

ComputerInstanceId

Receive-PSSession
    [-ComputerName] <String>
    -InstanceId <Guid>
    [-ApplicationName <String>]
    [-ConfigurationName <String>]
    [-OutTarget <OutTarget>]
    [-JobName <String>]
    [-Credential <PSCredential>]
    [-Authentication <AuthenticationMechanism>]
    [-CertificateThumbprint <String>]
    [-Port <Int32>]
    [-UseSSL]
    [-SessionOption <PSSessionOption>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

ConnectionUriSessionName

Receive-PSSession
    [-ConnectionUri] <Uri>
    -Name <String>
    [-ConfigurationName <String>]
    [-AllowRedirection]
    [-OutTarget <OutTarget>]
    [-JobName <String>]
    [-Credential <PSCredential>]
    [-Authentication <AuthenticationMechanism>]
    [-CertificateThumbprint <String>]
    [-SessionOption <PSSessionOption>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

ConnectionUriInstanceId

Receive-PSSession
    [-ConnectionUri] <Uri>
    -InstanceId <Guid>
    [-ConfigurationName <String>]
    [-AllowRedirection]
    [-OutTarget <OutTarget>]
    [-JobName <String>]
    [-Credential <PSCredential>]
    [-Authentication <AuthenticationMechanism>]
    [-CertificateThumbprint <String>]
    [-SessionOption <PSSessionOption>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

InstanceId

Receive-PSSession
    -InstanceId <Guid>
    [-OutTarget <OutTarget>]
    [-JobName <String>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

SessionName

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 可用於使用 Cmdlet 或 Disconnect-PSSessionInvoke-Command 參數刻意終止的 PSSessions。 或因網路中斷而無意中斷連線。

如果您使用 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 會話選項值,來限制重新導向連線的次數。 使用 Cmdlet 的 New-PSSessionOption 參數,或設定 預設變數的 $PSSessionOption 屬性。 預設值為 5。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

ConnectionUriSessionName
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ConnectionUriInstanceId
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-ApplicationName

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

輸入連線 URI 的應用程式名稱區段。 例如,在下列連線 URI 中,WSMan 是應用程式名稱:http://localhost:5985/WSMAN

會話的應用程式名稱會儲存在會話的 Runspace.ConnectionInfo.AppName 屬性中。

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

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

ComputerInstanceId
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False
ComputerSessionName
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Authentication

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

  • 預設
  • 基本
  • Credssp
  • 摘要
  • Kerberos
  • 談判
  • 使用隱式憑證進行協商

預設值為 Default。

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

謹慎

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

參數屬性

類型:AuthenticationMechanism
預設值:Default
接受的值:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
支援萬用字元:False
不要顯示:False

參數集

ComputerInstanceId
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ComputerSessionName
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ConnectionUriSessionName
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ConnectionUriInstanceId
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-CertificateThumbprint

指定具有權限將斷線會話重新連線之用戶帳戶的數位公鑰憑證(X509)。 輸入憑證的指紋。

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

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

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

ComputerInstanceId
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ComputerSessionName
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ConnectionUriSessionName
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ConnectionUriInstanceId
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-ComputerName

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

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

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False
別名:Cn

參數集

ComputerInstanceId
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False
ComputerSessionName
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-ConfigurationName

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

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

http://schemas.microsoft.com/powershell

會話的組態名稱會儲存在會話的 ConfigurationName 屬性中。

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

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

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

ComputerInstanceId
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False
ComputerSessionName
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False
ConnectionUriSessionName
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False
ConnectionUriInstanceId
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Confirm

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

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False
別名:cf

參數集

(All)
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
預設值:http://localhost:5985/WSMAN
支援萬用字元:False
不要顯示:False
別名:URI, CU

參數集

ConnectionUriSessionName
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False
ConnectionUriInstanceId
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Credential

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

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

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

備註

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

參數屬性

類型:PSCredential
預設值:Current user
支援萬用字元:False
不要顯示:False

參數集

ComputerInstanceId
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ComputerSessionName
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ConnectionUriSessionName
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ConnectionUriInstanceId
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Id

指定已中斷連線之會話的標識碼。 ID 參數僅在已中斷的會話先前連接到目前的會話時生效。

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

參數屬性

類型:Int32
預設值:None
支援萬用字元:False
不要顯示:False

參數集

Id
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-InstanceId

指定已中斷連線之會話的實例標識碼。 實例標識碼是 GUID,可唯一識別本機或遠端電腦上的 PSSession。 實例標識符會儲存在 PSSessionInstanceID 屬性中。

參數屬性

類型:Guid
預設值:None
支援萬用字元:False
不要顯示:False

參數集

ComputerInstanceId
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ConnectionUriInstanceId
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
InstanceId
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-JobName

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

Receive-PSSession 參數的值為 Job,或在中斷會話中執行的作業是在當前會話中啟動時, 會傳回作業。

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

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

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

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Name

指定已中斷連線之會話的友好名稱。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

ComputerSessionName
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ConnectionUriSessionName
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
SessionName
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-OutTarget

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

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

OutTarget 參數的預設值為 Host。 如果在中斷連線的會話中收到的命令,是在目前會話中啟動的,那麼 OutTarget 參數的預設值將是命令啟動時的格式。 如果命令是以作業的形式啟動,則預設會以作業的形式傳回。 否則,預設會傳回主機程式。

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

參數屬性

類型:OutTarget
預設值:None
接受的值:Default, Host, Job
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值: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
預設值:None
支援萬用字元:False
不要顯示:False

參數集

ComputerInstanceId
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ComputerSessionName
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Session

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

參數屬性

類型:PSSession
預設值:None
支援萬用字元:False
不要顯示:False

參數集

Session
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-SessionOption

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

選項的預設值由 $PSSessionOption 喜好設定變數的值決定,前提是該變數已被設定。 否則,預設值是由會話組態中設定的選項所建立。

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

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

參數屬性

類型:PSSessionOption
預設值:None
支援萬用字元:False
不要顯示:False

參數集

ComputerInstanceId
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ComputerSessionName
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ConnectionUriSessionName
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ConnectionUriInstanceId
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-UseSSL

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

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

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

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

ComputerInstanceId
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False
ComputerSessionName
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-WhatIf

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

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False
別名:無線

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

CommonParameters

此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters

輸入

PSSession

您可以將會話物件透過管道傳送到此 Cmdlet,例如由 Get-PSSession Cmdlet 傳回的物件。

Int32

您可以使用管道將會話 ID 傳送至此 Cmdlet。

Guid

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

String

您可以使用管線將會話名稱傳送至此指令小程式。

輸出

Job

如果 OutTarget 參數的值或預設值為 JobReceive-PSSession 會傳回作業物件。

PSObject

此 Cmdlet 會傳回在中斷聯機會話中執行的命令結果,如果有的話。

備註

PowerShell 包含下列 Receive-PSSession的別名:

  • 所有平臺:
    • rcsn

此 Cmdlet 僅適用於 Windows 平臺。

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

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

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

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

  • 當您使用 Cmdlet 建立 New-PSSession時,以及當您與 Invoke-Command中斷連線時,您可以設定和變更 PSSession 的閑置逾時。
  • PSSessionIdleTimeout 屬性對於斷線的會話至關重要,因為它決定了遠端電腦上斷線會話的維持時間長度。 即使在中斷連線的會話中命令仍在執行,從會話中斷連線的那一刻起,該會話仍會被視為閑置。

如果您使用 Cmdlet 的 Invoke-Command 參數,在遠端會話中啟動作業,即使作業是在遠端會話中執行,作業物件還是會在目前的會話中建立。 如果您中斷遠端會話的連線,則目前會話中的作業物件會中斷與作業的連線。 作業物件包含傳回給它的任何結果,但不會在中斷連線的會話中收到作業的新結果。

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

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

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

您也可以使用 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,因為它已連線到另一個會話。
  • 如需有關工作階段的 狀態 屬性之值的詳細資訊,請參閱執行空間狀態
  • 如需會話之 Availability 屬性值的詳細資訊,請參閱 RunspaceAvailability