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-Command
InDisconnectedSession 參數,以及意外中斷連線的會話,例如暫時網路中斷。
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-PSSessionOption
MaximumRedirection 參數,或設定$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
指定具有連線至已中斷連線工作階段權限的使用者帳戶。 預設為目前使用者。
輸入使用者名稱,例如 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 |
-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 |
輸入
您可以使用管線將會話傳送至此 Cmdlet (PSSession) 。
輸出
這個 Cmdlet 會傳回 物件,代表其重新連線的會話。
備註
此 Cmdlet 僅適用於 Windows 平臺。
Connect-PSSession
只會重新連線至已中斷連線的會話,也就是 State 屬性值為 Disconnected 的工作階段。 只有連線到或結束於執行 Windows PowerShell 3.0 或更新版本之電腦的作業階段可以中斷連線並重新連線。如果您在
Connect-PSSession
未中斷連線的會話上使用 ,此命令不會影響會話,而且不會產生錯誤。使用 EnableNetworkAccess 參數所建立的互動式令牌已中斷連線的回送會話只能從建立會話的電腦重新連線。 此限制可防止電腦遭受惡意存取。
PSSession 的 State 屬性值相對於目前的會話。 因此, [中斷連線 ] 的值表示 PSSession 未連線到目前的會話。 不過,這並不表示 PSSession 與所有會話中斷連線。 它可能連線不同的工作階段。 若要判斷是否可以連線或重新連線工作階段,請使用 Availability 屬性。
Availability 值為 None 表示您可以連線工作階段。 [忙碌] 的值表示您無法連線到 PSSession ,因為它已連線到另一個會話。
如需會話 之 State 屬性值的詳細資訊,請參閱 RunspaceState 列舉。
如需會話 可用性 屬性值的詳細資訊,請參閱 RunspaceAvailability 列舉。
當您連線到 PSSession 時,無法變更 PSSession 的閒置逾時值。 的
Connect-PSSession
SessionOption 參數會接受具有 IdleTimeout 值的 SessionOption 物件。 不過,連接到 PSSession 時,會忽略 SessionOption 物件的 IdleTimeout 值和變數的 IdleTimeout 值$PSSessionOption
。當您建立 PSSession、使用
New-PSSession
或Invoke-Command
Cmdlet,以及中斷與 PSSession 的連線時,您可以設定和變更 PSSession 的閑置逾時。PSSession 的IdleTimeout屬性對於中斷連線的會話很重要,因為它會決定遠端電腦上維護中斷連線的會話多久。 已中斷連線的工作階段一被中斷連線,便被視為閒置,即使命令仍然在已中斷連線的工作階段中執行也是如此。