共用方式為


Connect-PSSession

重新連線至已中斷連線的工作階段。

Syntax

Connect-PSSession
       -Name <String[]>
       [-ThrottleLimit <Int32>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Connect-PSSession
       [-Session] <PSSession[]>
       [-ThrottleLimit <Int32>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Connect-PSSession
       -ComputerName <String[]>
       [-ApplicationName <String>]
       [-ConfigurationName <String>]
       -InstanceId <Guid[]>
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-Port <Int32>]
       [-UseSSL]
       [-SessionOption <PSSessionOption>]
       [-ThrottleLimit <Int32>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Connect-PSSession
       -ComputerName <String[]>
       [-ApplicationName <String>]
       [-ConfigurationName <String>]
       [-Name <String[]>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-Port <Int32>]
       [-UseSSL]
       [-SessionOption <PSSessionOption>]
       [-ThrottleLimit <Int32>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Connect-PSSession
       [-ConfigurationName <String>]
       [-ConnectionUri] <Uri[]>
       [-AllowRedirection]
       -InstanceId <Guid[]>
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-SessionOption <PSSessionOption>]
       [-ThrottleLimit <Int32>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Connect-PSSession
       [-ConfigurationName <String>]
       [-ConnectionUri] <Uri[]>
       [-AllowRedirection]
       [-Name <String[]>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-SessionOption <PSSessionOption>]
       [-ThrottleLimit <Int32>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Connect-PSSession
       -InstanceId <Guid[]>
       [-ThrottleLimit <Int32>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Connect-PSSession
       [-ThrottleLimit <Int32>]
       [-Id] <Int32[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Description

此 Cmdlet 僅適用於 Windows 平臺。

Cmdlet Connect-PSSession 會重新連線到使用者管理的 PowerShell 會話, (已中斷連線的 PSSessions) 。 它適用於刻意中斷的會話,例如使用 Disconnect-PSSession Cmdlet 或 Cmdlet 的 Invoke-CommandInDisconnectedSession 參數,以及意外中斷連線的會話,例如暫時網路中斷。

Connect-PSSession 可以連線到由相同用戶啟動的任何中斷聯機會話。 這些包括由 其他電腦上其他會話啟動或中斷連線的會話。

不過, Connect-PSSession 無法連線到中斷或已關閉的會話,或是使用 Cmdlet 啟動的 Enter-PSSession 互動式會話。 您也無法連線其他使用者啟動的工作階段,除非您可以提供建立工作階段之使用者的認證。

如需中斷連線工作階段功能的詳細資訊,請參閱 about_Remote_Disconnected_Sessions

此 Cmdlet 是在 Windows PowerShell 3.0 中引進。

範例

範例 1:重新連線到會話

PS C:\> Connect-PSSession -ComputerName Server01 -Name ITTask
Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 4 ITTask          Server01        Opened        ITTasks                  Available

此命令會重新連線到 ITTask Server01 電腦上的作業階段。

輸出顯示命令成功。 會話的狀態Opened而可用性Available,表示您可以在會話中執行命令。

範例 2:中斷連線和重新連線的效果

PS C:\> Get-PSSession

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 1 Backups         Localhost       Opened        Microsoft.PowerShell     Available


PS C:\> Get-PSSession | Disconnect-PSSession

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 1 Backups         Localhost       Disconnected  Microsoft.PowerShell          None


PS C:\> Get-PSSession | Connect-PSSession

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 1 Backups         Localhost       Opened        Microsoft.PowerShell     Available

此範例顯示中斷連線再重新連線工作階段的作用。

第一個命令會 Get-PSSession 使用 Cmdlet。 若無 ComputerName 參數,命令只會取得目前工作階段中所建立的工作階段。

輸出會顯示命令取得 Backups 本機電腦上的會話。 工作階段 的狀態Opened而可用性Available

第二個命令會 Get-PSSession 使用 Cmdlet 來取得在目前工作階段中建立的 PSSession 物件,以及 Disconnect-PSSession Cmdlet 來中斷會話的連接。 輸出會顯示 Backups 會話已中斷連線。 工作階段 的狀態Disconnected而可用性None

第三個命令會 Get-PSSession 使用 Cmdlet 來取得在目前會話中建立的 PSSession 物件,以及 Connect-PSSession Cmdlet 來重新連接會話。 輸出會顯示 Backups 會話已重新連線。 工作階段 的狀態Opened而可用性Available

如果您在 Connect-PSSession 未中斷連線的會話上使用 Cmdlet,此命令不會影響會話,而且不會產生任何錯誤。

範例 3:企業案例中的一系列命令

這一系列的命令示範 Cmdlet 如何在 Connect-PSSession 企業案例中使用。 在此案例中,系統管理員在遠端電腦工作階段中啟動長時間執行的工作。 啟動工作之後,系統管理員從工作階段中斷連線,之後就回家了。 稍後,系統管理員會登入主計算機,並確認工作執行到完成為止。

系統管理員會先在遠端電腦上建立會話,並在會話中執行腳本。第一個命令會 New-PSSession 使用 Cmdlet 在 Server01 遠端電腦上建立 ITTask 工作階段。 此命令會使用 ConfigurationName 參數來指定工作階段組 ITTasks 態。 命令會將會話儲存在變數中 $s

第二個命令 Invoke-Command Cmdlet,用來在 變數中的會話中 $s 啟動背景工作。 它使用 FilePath 參數,在背景工作中執行指令碼。

第三個命令會 Disconnect-PSSession 使用 Cmdlet 來中斷變數中會話的 $s 連線。 此命令會使用 OutputBufferingMode 參數搭配 值 Drop ,以防止腳本遭到封鎖,方法是必須將輸出傳遞至會話。 它會使用 IdleTimeoutSec 參數將會話逾時延長至15小時。 當命令完成時,系統管理員會鎖定計算機,並在晚上回到家。

稍後,系統管理員會啟動她的主計算機、登入公司網路,然後啟動PowerShell。 第四個命令會 Get-PSSession 使用 Cmdlet 來取得 Server01 計算機上的會話。 命令會 ITTask 尋找會話。 第五個命令會 Connect-PSSession 使用 Cmdlet 來連線到 ITTask 會話。 命令會將工作階段儲存於 $s 變數中。

第六個Get-Job命令會Invoke-Command使用 Cmdlet 在 變數的$s會話中執行命令。 輸出會顯示作業順利完成。第七個Receive-Job命令會Invoke-Command使用 Cmdlet,在會話中$s變數的會話中執行命令。 命令會將結果儲存在變數中 $BackupSpecs 。第八個命令會 Invoke-Command 使用 Cmdlet 在工作階段中執行另一個腳本。 命令會使用會話中的變數值 $BackupSpecs 做為腳本的輸入。

PS C:\> $s = New-PSSession -ComputerName Server01 -Name ITTask -ConfigurationName ITTasks
PS C:\> Invoke-Command -Session $s {Start-Job -FilePath \\Server30\Scripts\Backup-SQLDatabase.ps1}

Id     Name            State         HasMoreData     Location             Command
--     ----            -----         -----------     --------             -------
2      Job2            Running       True            Server01             \\Server30\Scripts\Backup...

PS C:\> Disconnect-PSSession -Session $s -OutputBufferingMode Drop -IdleTimeoutSec 60*60*15

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 1 ITTask          Server01        Disconnected  ITTasks               None

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

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 1 ITTask          Server01        Disconnected  ITTasks               None


PS C:\> $s = Connect-PSSession -ComputerName Server01 -Name ITTask


Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 1 ITTask          Server01        Opened        ITTasks               Available

PS C:\> Invoke-Command -Session $s {Get-Job}

Id     Name            State         HasMoreData     Location             Command
--     ----            -----         -----------     --------             -------
2      Job2            Completed     True            Server01             \\Server30\Scripts\Backup...

PS C:\> Invoke-Command -Session $s {$BackupSpecs = Receive-Job -JobName Job2}

PS C:\> Invoke-Command -Session $s {\\Server30\Scripts\New-SQLDatabase.ps1 -InitData $BackupSpecs.Initialization}

PS C:\> Disconnect-PSSession -Session $s -OutputBufferingMode Drop -IdleTimeoutSec 60*60*15
Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 1 ITTask          Server01        Disconnected  ITTasks               None

第九個命令會與變數中的 $s 會話中斷連線。 系統管理員關閉 nd 與變數中的 $s 工作階段中斷連線。系統管理員關閉PowerShell並關閉電腦。 系統管理員隔天可從工作電腦重新連線工作階段,並檢查指令碼狀態。

參數

-AllowRedirection

表示此 Cmdlet 允許將此連線重新導向至替代 URI。

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

您也可以變更 MaximumConnectionRedirectionCount 工作階段選項值,限制連線重新導向的次數。 使用 Cmdlet 的 New-PSSessionOptionMaximumRedirection 參數,或設定$PSSessionOption喜好設定變數的 MaximumConnectionRedirectionCount 屬性。 預設值是 5

Type:SwitchParameter
Position:Named
Default value:None
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
  • Basic
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

預設值是 Default

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

警告

使用者認證會傳遞至要驗證之遠端電腦的「認證安全性支援提供者 (CredSSP)」驗證,是設計用於需要在一個以上資源進行驗證的命令,例如存取遠端網路共用。 此機制會使得遠端作業的安全性風險變高。 若遠端電腦遭到入侵,傳遞給它的認證便可用來控制網路工作階段。

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:None
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 位址或完整網域名稱。 不允許使用萬用字元。 若要指定本機電腦,請輸入電腦名稱、localhost或點 () .

Type:String[]
Aliases:Cn
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ConfigurationName

只連線使用指定工作階段設定的工作階段。

輸入工作階段設定的設定名稱或完整資源 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 參數來指定連線 URI 值。

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

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

Type:Uri[]
Aliases:URI, CU
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Credential

指定具有連線至已中斷連線工作階段權限的使用者帳戶。 預設為目前使用者。

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

認證會儲存在 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

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

Type:Guid[]
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Name

指定已中斷連線工作階段的好記名稱。

Type:String[]
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

-ThrottleLimit

指定為執行此命令可建立的最大同時連線數。 如果您省略此參數或輸入的值 0,則會使用預設值、 32

節流限制僅適用於目前命令,不適用於工作階段或電腦。

Type:Int32
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:None
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

輸入

PSSession

您可以使用管線將會話傳送至此 Cmdlet (PSSession) 。

輸出

PSSession

這個 Cmdlet 會傳回 物件,代表其重新連線的會話。

備註

  • 此 Cmdlet 僅適用於 Windows 平臺。

  • Connect-PSSession 只會重新連線至已中斷連線的會話,也就是 State 屬性值為 Disconnected 的工作階段。 只有連線到或結束於執行 Windows PowerShell 3.0 或更新版本之電腦的作業階段可以中斷連線並重新連線。

  • 如果您在 Connect-PSSession 未中斷連線的會話上使用 ,此命令不會影響會話,而且不會產生錯誤。

  • 使用 EnableNetworkAccess 參數所建立的互動式令牌已中斷連線的回送會話只能從建立會話的電腦重新連線。 此限制可防止電腦遭受惡意存取。

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

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

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

    如需會話 可用性 屬性值的詳細資訊,請參閱 RunspaceAvailability 列舉

  • 當您連線到 PSSession 時,無法變更 PSSession 的閒置逾時值。 的 Connect-PSSessionSessionOption 參數會接受具有 IdleTimeout 值的 SessionOption 物件。 不過,連接到 PSSession 時,會忽略 SessionOption 物件的 IdleTimeout 值和變數的 IdleTimeout$PSSessionOption

    當您建立 PSSession、使用 New-PSSessionInvoke-Command Cmdlet,以及中斷與 PSSession 的連線時,您可以設定和變更 PSSession 的閑置逾時。

    PSSessionIdleTimeout屬性對於中斷連線的會話很重要,因為它會決定遠端電腦上維護中斷連線的會話多久。 已中斷連線的工作階段一被中斷連線,便被視為閒置,即使命令仍然在已中斷連線的工作階段中執行也是如此。