Connect-PSSession
重新連線到已中斷連線的會話。
語法
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>]
[-Name <String[]>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-SessionOption <PSSessionOption>]
[-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
[-ConfigurationName <String>]
[-ConnectionUri] <Uri[]>
[-AllowRedirection]
[-Name <String[]>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-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
-InstanceId <Guid[]>
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Connect-PSSession
[-ThrottleLimit <Int32>]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
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:重新連線到會話
Connect-PSSession -ComputerName Server01 -Name ITTask
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
4 ITTask Server01 Opened ITTasks Available
此命令會重新連線到 ITTask
Server01 電腦上的作業階段。
輸出顯示命令成功。 會話 的狀態 是 Opened
, 而可用性 為 Available
,表示您可以在會話中執行命令。
範例 2:中斷連線和重新連線的效果
Get-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backups Localhost Opened Microsoft.PowerShell Available
Get-PSSession | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Backups Localhost Disconnected Microsoft.PowerShell None
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
做為腳本的輸入。
$s = New-PSSession -ComputerName Server01 -Name ITTask -ConfigurationName ITTasks
Invoke-Command -Session $s -ScriptBlock {Start-Job -FilePath \\Server30\Scripts\Backup-SQLDatabase.ps1}
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
2 Job2 Running True Server01 \\Server30\Scripts\Backup...
Disconnect-PSSession -Session $s -OutputBufferingMode Drop -IdleTimeoutSec 60*60*15
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Disconnected ITTasks None
Get-PSSession -ComputerName Server01 -Name ITTask
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Disconnected ITTasks None
$s = Connect-PSSession -ComputerName Server01 -Name ITTask
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Opened ITTasks Available
Invoke-Command -Session $s -ScriptBlock {Get-Job}
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
2 Job2 Completed True Server01 \\Server30\Scripts\Backup...
Invoke-Command -Session $s -ScriptBlock {$BackupSpecs = Receive-Job -JobName Job2}
Invoke-Command -Session $s -ScriptBlock {\\Server30\Scripts\New-SQLDatabase.ps1 -InitData $BackupSpecs.Initialization}
Disconnect-PSSession -Session $s -OutputBufferingMode Drop -IdleTimeoutSec 60*60*15
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server01 Disconnected ITTasks None
第九個命令會中斷變數中會話的 $s
連線。系統管理員會關閉PowerShell並關閉電腦。 她可以在第二天重新連線到會話,並從工作計算機檢查腳本狀態。
參數
-AllowRedirection
表示此 Cmdlet 允許將此連線重新導向至替代 URI。
當您使用 ConnectionURI 參數時,遠端目的地可以傳回指示以重新導向至不同的 URI。 根據預設,PowerShell 不會重新導向連線,但您可以使用此參數來允許它重新導向連線。
您也可以變更 MaximumConnectionRedirectionCount 會話選項值,以限制重新導向連線的次數。 使用 Cmdlet 的 New-PSSessionOption
MaximumRedirection 參數,或設定$PSSessionOption喜好設定變數的 MaximumConnectionRedirectionCount 屬性。 預設值是 5
。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ApplicationName
指定應用程式的名稱。 此 Cmdlet 只會連線到使用指定應用程式的作業階段。
輸入連線 URI 的應用程式名稱區段。 例如,在下列連線 URI 中,應用程式名稱為 WSMan: http://localhost:5985/WSMAN
。 會話的應用程式名稱會儲存在 會話的 Runspace.ConnectionInfo.AppName 屬性中。
此參數的值是用來選取和篩選會話。 它不會變更會話所使用的應用程式。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Authentication
指定用來驗證命令中使用者認證的機制,以重新連線到已中斷連線的會話。 此參數可接受的值為:
Default
Basic
Credssp
Digest
Kerberos
Negotiate
NegotiateWithImplicitCredential
預設值是 Default
。
如需此參數值的詳細資訊,請參閱 AuthenticationMechanism 列舉。
警告
認證安全性支援提供者 (CredSSP) 驗證,其中使用者的認證會傳遞至要驗證的遠端電腦,其設計訴求是在多個資源上要求驗證的命令,例如存取遠端網路共用。 此機制會增加遠端作業的安全性風險。 如果遠端電腦遭到入侵,傳遞給它的認證可用來控制網路會話。
類型: | AuthenticationMechanism |
接受的值: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-CertificateThumbprint
指定具有連線到已中斷聯機會話之用戶帳戶的數位公鑰憑證 (X509)。 輸入憑證的憑證指紋。
憑證將用於用戶端憑證式驗證。 它們只能對應至本機用戶帳戶。 它們不適用於網域帳戶。
若要取得憑證指紋,請使用 Get-Item
PowerShell Cert:
磁碟驅動器中的或 Get-ChildItem
命令。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ComputerName
指定已中斷聯機會話儲存所在的計算機。 會話會儲存在位於伺服器端或接收端連線的電腦上。 預設是本機電腦。
輸入 NetBIOS 名稱、IP 位址或一部電腦的完整功能變數名稱。 不允許通配符。 若要指定本機電腦,請輸入電腦名稱、 localhost
或點 (.
)
類型: | String[] |
別名: | Cn |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-ConfigurationName
僅聯機到使用指定會話設定的會話。
輸入工作階段組態的組態名稱或完整資源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,您可以使用 UseSSL 和 Port 參數來指定連線 URI 值。
URI 傳輸區段的有效值為 HTTP 和 HTTPS。 如果您指定具有傳輸區段的連線 URI,但未指定埠,則會使用標準埠建立會話: 80
用於 HTTP 和 443
HTTPS。 若要使用 PowerShell 遠端處理的預設埠,請指定 HTTP 或 5986
HTTPS 的連接埠5985
。
如果目的地計算機將連線重新導向至不同的 URI,除非您在命令中使用 AllowRedirection 參數,否則 PowerShell 會防止重新導向。
類型: | Uri[] |
別名: | URI, CU |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Credential
指定有權連線到已中斷聯機會話的用戶帳戶。 預設為目前使用者。
輸入使用者名稱,例如 User01
或 Domain01\User01
,或輸入 Cmdlet 所產生的 Get-Credential
PSCredential 物件。 如果您輸入使用者名稱,系統會提示您輸入密碼。
認證會儲存在 PSCredential 物件中,密碼會儲存為 SecureString。
注意
如需 SecureString 數據保護的詳細資訊,請參閱 SecureString 有多安全?。
類型: | PSCredential |
Position: | Named |
預設值: | Current user |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Id
指定已中斷連線之會話的標識碼。 只有在 先前已中斷連線的會話已連線到目前會話時,Id 參數才有效。
當會話儲存在本機計算機上,但未連線到目前的會話時,這個參數有效但無效。
類型: | Int32[] |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-InstanceId
指定已中斷連線之會話的實例標識碼。
實例標識碼是 GUID,可唯一 識別本機或遠端電腦上的 PSSession 。
實例標識碼會儲存在 PSSession 的 InstanceID 屬性中。
類型: | Guid[] |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-Name
指定已中斷連線之會話的易記名稱。
類型: | String[] |
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 |
-ThrottleLimit
指定可以建立以執行此命令的並行連線數目上限。
如果您省略此參數或輸入的值 0
,則會使用預設值 32
、 。
節流限制僅適用於目前的命令,不適用於會話或計算機。
類型: | Int32 |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-UseSSL
指出此 Cmdlet 會使用安全套接字層 (SSL) 通訊協議來連線到已中斷連線的會話。 預設不會使用 SSL。
WS-Management 會加密透過網路傳輸的所有 PowerShell 內容。 UseSSL 參數是額外的保護,可跨 HTTPS 連線傳送數據,而不是 HTTP 連線。
如果您使用此參數,但在用於命令的埠上無法使用 SSL,則命令會失敗。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-WhatIf
顯示執行 Cmdlet 後會發生的情況。 未執行 Cmdlet。
類型: | SwitchParameter |
別名: | wi |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
您可以使用管線將會話 (PSSession) 傳送至此 Cmdlet。
輸出
此 Cmdlet 會傳回 物件,代表其重新連線的會話。
備註
Windows PowerShell 包含下列的 Connect-PSSession
別名:
cnsn
此 Cmdlet 僅適用於 Windows 平臺。
Connect-PSSession
只會重新連線到已中斷連線的會話,也就是 State 屬性值為 Disconnected 的工作階段。 只有連線到或結束於執行 Windows PowerShell 3.0 或更新版本的電腦的會話,才能中斷連線並重新連線。如果您在
Connect-PSSession
未中斷連線的會話上使用 ,命令不會影響會話,而且不會產生錯誤。使用 EnableNetworkAccess 參數所建立的互動式令牌中斷連線的回送會話,只能從建立會話的電腦重新連線。 這項限制可保護計算機免於惡意存取。
PSSession 的 State 屬性值相對於目前的會話。 因此,Disconnected 的值表示 PSSession 未連線到目前的會話。 不過,這並不表示 PSSession 與所有會話中斷連線。 它可能會連線到不同的會話。 若要判斷您是否可以連線或重新連線到會話,請使用 Availability 屬性。
[無] 的可用性值表示您可以連線到會話。 Busy 值表示您無法連線到 PSSession ,因為它已連線到另一個會話。
如需會話之 State 屬性值的詳細資訊,請參閱 RunspaceState 列舉。
如需會話之 Availability 屬性值的詳細資訊,請參閱 RunspaceAvailability 列舉。
當您連線到 PSSession 時,您無法變更 PSSession 的閒置逾時值。 的
Connect-PSSession
SessionOption 參數會採用具有 IdleTimeout 值的 SessionOption 物件。 不過,當連接到 PSSession 時,會忽略 SessionOption 物件的 IdleTimeout 值和變數的 IdleTimeout 值$PSSessionOption
。當您使用 或 Cmdlet 建立 PSSession 時,以及當您中斷與 PSSession 的連線時,您可以設定和變更 PSSession 的閒置逾時。
Invoke-Command
New-PSSession
PSSession 的IdleTimeout屬性對於中斷連線的會話至關重要,因為它會決定遠端電腦上維護中斷聯機會話的時間長度。 即使命令是在中斷連線的會話中執行,中斷連線的會話也會被視為閑置。