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>]
-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>]
说明
此 cmdlet 仅在 Windows 平台上可用。
Connect-PSSession
cmdlet 重新连接到已断开连接的用户管理的 PowerShell 会话(PSSessions)。 它适用于有意断开连接的会话,例如使用
Connect-PSSession
可以连接到同一用户启动的任何断开连接的会话。 其中包括从其他计算机上的其他会话启动或断开连接的会话。
但是,Connect-PSSession
无法使用 Enter-PSSession
cmdlet 连接到中断或关闭的会话或交互式会话。 此外,不能将会话连接到其他用户启动的会话,除非可以提供创建会话的用户的凭据。
有关断开连接会话功能的详细信息,请参阅 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
此命令重新连接到 Server01 计算机上的 ITTask
会话。
输出显示命令成功。 会话 状态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:企业方案中的一系列命令
此系列命令演示如何在企业方案中使用 Connect-PSSession
cmdlet。 在这种情况下,系统管理员会在远程计算机上的会话中启动长时间运行的作业。 启动作业后,管理员会断开会话的连接,然后回家。
当晚晚些时候,管理员登录到她的主计算机,并验证作业是否运行,直到作业完成。
管理员首先在远程计算机上创建会话并在会话中运行脚本。第一个命令使用 New-PSSession
cmdlet 在 Server01 远程计算机上创建 ITTask
会话。 该命令使用 ConfigurationName 参数来指定 ITTasks
会话配置。 该命令将会话保存在 $s
变量中。
第二个命令 Invoke-Command
cmdlet,以在 $s
变量中的会话中启动后台作业。 它使用 FilePath 参数在后台作业中运行脚本。
第三个命令使用 Disconnect-PSSession
cmdlet 与 $s
变量中的会话断开连接。 该命令使用具有 Drop
值的 OutputBufferingMode 参数来阻止脚本,因为必须将输出传送到会话。 它使用 IdleTimeoutSec 参数将会话超时扩展到 15 小时。 命令完成后,管理员锁定计算机,晚上回家。
当晚晚些时候,管理员启动她的主计算机,登录到公司网络,并启动 PowerShell。 第四个命令使用 Get-PSSession
cmdlet 获取 Server01 计算机上的会话。 该命令查找 ITTask
会话。 第五个命令使用 Connect-PSSession
cmdlet 连接到 ITTask
会话。 该命令将会话保存在 $s
变量中。
第六个命令使用 Invoke-Command
cmdlet 在 $s
变量中的会话中运行 Get-Job
命令。 输出显示作业已成功完成。第七个命令使用 Invoke-Command
cmdlet 在会话 $s
变量中的会话中运行 Receive-Job
命令。 该命令将结果保存在 $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
变量中的会话断开连接。 管理员关闭与 $s
变量中的会话断开连接。管理员关闭 PowerShell 并关闭计算机。 她可以在第二天重新连接到会话,并检查工作计算机上的脚本状态。
参数
-AllowRedirection
指示此 cmdlet 允许将此连接重定向到备用 URI。
使用 ConnectionURI 参数时,远程目标可以返回重定向到其他 URI 的说明。 默认情况下,PowerShell 不会重定向连接,但可以使用此参数来允许它重定向连接。
还可以通过更改 MaximumConnectionRedirectionCount 会话选项值来限制连接重定向的次数。 使用 New-PSSessionOption
cmdlet 的 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)。 输入证书的证书指纹。
证书用于基于客户端证书的身份验证。 它们只能映射到本地用户帐户。 它们不适用于域帐户。
若要获取证书指纹,请使用 PowerShell Cert:
驱动器中的 Get-Item
或 Get-ChildItem
命令。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-ComputerName
指定存储断开连接会话的计算机。 会话存储在位于服务器端或接收连接的计算机上。 默认值为本地计算机。
键入 NetBIOS 名称、IP 地址或一台计算机的完全限定域名。 不允许使用通配符。 若要指定本地计算机,请键入计算机名称、localhost
或点(.
)
类型: | String[] |
别名: | Cn |
Position: | Named |
默认值: | 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 和 端口 参数来指定连接 URI 值。
URI 传输 段的有效值为 HTTP 和 HTTPS。 如果使用传输段指定连接 URI,但未指定端口,则会使用标准端口创建会话:80
HTTP 和 HTTPS 443
。 若要使用 PowerShell 远程处理的默认端口,请为 HTTP 指定端口 5985
,或为 HTTPS 指定端口 5986
。
如果目标计算机将连接重定向到其他 URI,则 PowerShell 会阻止重定向,除非在命令中使用 AllowRedirection 参数。
类型: | Uri[] |
别名: | URI, CU |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-Credential
指定有权连接到断开连接会话的用户帐户。 默认值为当前用户。
键入用户名(如 User01
或 Domain01\User01
),或输入由 Get-Credential
cmdlet 生成的 PSCredential 对象。 如果键入用户名,系统会提示输入密码。
凭据存储在 PSCredential 对象中,密码存储为 SecureString。
注意
有关 SecureString 数据保护的详细信息,请参阅 SecureString 的安全性如何?。
类型: | PSCredential |
Position: | Named |
默认值: | Current user |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Id
指定断开连接会话的 ID。 ID 参数仅在以前连接到当前会话断开连接的会话时有效。
当会话存储在本地计算机上但未连接到当前会话时,此参数有效,但无效。
类型: | Int32[] |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-InstanceId
指定断开连接会话的实例 ID。
实例 ID 是一个 GUID,用于唯一标识本地或远程计算机上的 PSSession。
实例 ID 存储在 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 返回一个对象,该对象表示其重新连接到的会话。
备注
此 cmdlet 仅在 Windows 平台上可用。
Connect-PSSession
仅重新连接到已断开连接的会话,即具有 State 属性的“已断开连接”值的会话。 只有连接到或结束于运行 Windows PowerShell 3.0 或更高版本的计算机的会话才能断开连接并重新连接。如果在未断开连接的会话上使用
Connect-PSSession
,该命令不会影响会话,也不会生成错误。使用使用 EnableNetworkAccess 参数创建的交互式令牌的断开连接环回会话只能从创建会话的计算机重新连接。 此限制可保护计算机免受恶意访问。
PSSession 的 State 属性的值相对于当前会话。 因此,断开连接 值表示 PSSession 未连接到当前会话。 但是,这并不意味着 PSSession 已与所有会话断开连接。 它可能连接到其他会话。 若要确定是否可以连接或重新连接到会话,请使用 Availability 属性。
“无”可用性 值表示可以连接到会话。 “忙碌”值表示无法连接到 PSSession,因为它已连接到另一个会话。
有关会话的 State 属性的值的详细信息,请参阅 RunspaceState 枚举。
有关会话 可用性 属性的值的详细信息,请参阅 RunspaceAvailability 枚举。
连接到 PSSession时,无法更改 PSSession 的空闲超时值。
Connect-PSSession
的 SessionOption 参数采用具有 IdleTimeout 值的 SessionOption 对象。 但是,SessionOption 对象的 IdleTimeout 值,在连接到PSSession 时,将忽略变量的 IdleTimeout 值。通过使用
New-PSSession
或Invoke-Command
cmdlet,以及断开与 PSSession的连接,可以在创建 PSSession时设置和更改 PSSession 的空闲超时。PSSession 的 IdleTimeout 属性对于断开连接的会话至关重要,因为它确定在远程计算机上维护断开连接的会话的时间。 即使命令在断开连接的会话中运行,断开连接的会话也被视为空闲。