当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Connect-PSSession (Microsoft.PowerShell.Core)

作者:精品下载站 日期:2024-12-14 02:17:01 浏览:13 分类:玩电脑

Connect-PSSession (Microsoft.PowerShell.Core)


连接-PSSession

模块 :Microsoft.PowerShell.Core

重新连接到断开连接的会话。

句法

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)。它适用于有意断开连接的会话,例如通过使用 Disconnect-PSSession cmdlet 或 Invoke-Command cmdlet 的 InDisconnectedSession 参数,以及那些意外断开的连接,例如由于暂时的网络中断。

Connect-PSSession 可以连接到由同一用户启动的任何断开连接的会话。其中包括那些由其他计算机上的其他会话启动或断开连接的会话。

但是,Connect-PSSession 无法连接到损坏或关闭的会话,或使用 Enter-PSSession cmdlet 启动的交互式会话。此外,您无法将会话连接到其他用户启动的会话,除非您可以提供创建该会话的用户的凭据。

有关“断开连接的会话”功能的更多信息,请参阅 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

此命令重新连接到 Server01 计算机上的 ITTask 会话。

输出显示该命令成功。会话的状态已打开可用性可用,这表示您可以在会话中运行命令会议。

示例 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 会话。会话的状态已打开可用性可用

第二个命令使用 Get-PSSession cmdlet 获取在当前会话中创建的 PSSession 对象,并使用 Disconnect-PSSession cmdlet 断开连接会议。输出显示 Backups 会话已断开连接。会话的状态已断开可用性

第三条命令使用 Get-PSSession cmdlet 获取在当前会话中创建的 PSSession 对象,并使用 Connect-PSSession cmdlet 重新连接会议。输出显示 Backups 会话已重新连接。会话的状态已打开可用性可用

如果在未断开连接的会话上使用 Connect-PSSession cmdlet,则该命令不会影响该会话,也不会生成任何错误。

示例3:企业场景中的一系列命令

这一系列命令展示了如何在企业场景中使用 Connect-PSSession cmdlet。在这种情况下,系统管理员在远程计算机上的会话中启动长时间运行的作业。开始作业后,管理员断开与会话的连接并回家。当天晚上晚些时候,管理员登录到她的家庭计算机并验证该作业是否运行直至完成。

管理员首先在远程计算机上创建会话并在会话中运行脚本。第一个命令使用 New-PSSession cmdlet 在 Server01 上创建 ITTask 会话远程计算机。该命令使用 ConfigurationName 参数指定 ITTasks 会话配置。该命令将会话保存在 $s 变量中。

第二个命令 Invoke-Command cmdlet 用于在 $s 变量中的会话中启动后台作业。它使用 FilePath 参数在后台作业中运行脚本。

第三条命令使用 Disconnect-PSSession cmdlet 断开与 $s 变量中的会话的连接。该命令使用值为 DropOutputBufferingMode 参数来防止脚本因必须将输出传递到会话而被阻止。它使用 IdleTimeoutSec 参数将会话超时延长至 15 小时。命令完成后,管理员锁定计算机并晚上回家。

当天晚上晚些时候,管理员启动她的家庭计算机,登录到公司网络,然后启动 PowerShell。第四条命令使用 Get-PSSession cmdlet 获取 Server01 计算机上的会话。该命令查找 ITTask 会话。第五个命令使用 Connect-PSSession cmdlet 连接到 ITTask 会话。该命令将会话保存在 $s 变量中。

第六个命令使用 Invoke-Command cmdlet 在会话中的 $s 变量中运行 Get-Job 命令。输出显示作业已成功完成。第七条命令使用 Invoke-Command cmdlet 在 $sReceive-Job 命令/code> 会话中的变量。该命令将结果保存在 $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

第 9 个命令在 $s 变量中断开与会话的连接。管理员关闭 PowerShell 并关闭计算机。她可以在第二天重新连接到会话并从工作计算机检查脚本状态。

参数

-AllowRedirection

指示此 cmdlet 允许将此连接重定向到备用 URI。

当您使用 ConnectionURI 参数时,远程目标可以返回重定向到不同 URI 的指令。默认情况下,PowerShell 不重定向连接,但您可以使用此参数允许它重定向连接。

您还可以通过更改 MaximumConnectionRedirectionCount 会话选项值来限制连接重定向的次数。使用 New-PSSessionOption cmdlet 的 MaximumRedirection 参数或设置 $PSSessionOption 首选项变量的 MaximumConnectionRedirectionCount 属性。默认值为5

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-ApplicationName

指定应用程序的名称。此 cmdlet 仅连接到使用指定应用程序的会话。

输入连接 URI 的应用程序名称段。例如,在以下连接 URI 中,应用程序名称为 WSMan:http://localhost:5985/WSMAN。会话的应用程序名称存储在会话的 Runspace.ConnectionInfo.AppName 属性中。

该参数的值用于选择和过滤会话。它不会更改会话使用的应用程序。

类型 :

String

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

False

-Authentication

指定用于在重新连接到断开连接的会话的命令中验证用户凭据的机制。该参数可接受的值为:

    Default
    Basic
    Credssp
    Digest
    Kerberos
    Negotiate
    NegotiateWithImplicitCredential

    默认值为默认

    有关此参数值的更多信息,请参阅 AuthenticationMechanism 枚举。

    警告

    凭据安全支持提供程序 (CredSSP) 身份验证将用户的凭据传递到远程计算机进行身份验证,专为需要对多个资源进行身份验证的命令(例如访问远程网络共享)而设计。这种机制增加了远程操作的安全风险。如果远程计算机受到威胁,则传递给它的凭据可用于控制网络会话。

    类型 :

    AuthenticationMechanism

    接受的值:

    默认、基本、协商、NegotiateWithImplicitCredential、Credssp、摘要、Kerberos

    位置:

    命名

    默认值:

    None

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -CertificateThumbprint

    指定有权连接到已断开连接的会话的用户帐户的数字公钥证书 (X509)。输入证书的证书指纹。

    证书用于基于客户端证书的身份验证。它们只能映射到本地用户帐户。它们不适用于域帐户。

    要获取证书指纹,请在 PowerShell Cert: 驱动器中使用 Get-ItemGet-ChildItem 命令。

    类型 :

    String

    位置:

    命名

    默认值:

    None

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -ComputerName

    指定存储断开连接的会话的计算机。会话存储在服务器端或连接接收端的计算机上。默认为本地计算机。

    键入一台计算机的 NetBIOS 名称、IP 地址或完全限定域名。不允许使用通配符。要指定本地计算机,请键入计算机名称、localhost 或点 (.)

    类型 :

    String[]

    别名:

    Cn

    位置:

    命名

    默认值:

    None

    必需的:

    True

    接受管道输入:

    False

    接受通配符:

    False

    -ConfigurationName

    仅连接到使用指定会话配置的会话。

    输入会话配置的配置名称或完全限定的资源 URI。如果仅指定配置名称,则会在前面添加以下架构 URI:http://schemas.microsoft.com/powershell。会话的配置名称存储在会话的 ConfigurationName 属性中。

    该参数的值用于选择和过滤会话。它不会更改会话使用的会话配置。

    有关会话配置的更多信息,请参阅 about_Session_Configurations。

    类型 :

    String

    位置:

    命名

    默认值:

    None

    必需的:

    False

    接受管道输入:

    True

    接受通配符:

    False

    -Confirm

    在运行 cmdlet 之前提示您进行确认。

    类型 :

    SwitchParameter

    别名:

    cf

    位置:

    命名

    默认值:

    False

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -ConnectionUri

    指定断开连接的会话的连接端点的 URI。

    URI 必须是完全限定的。该字符串的格式如下:

    <Transport>://<ComputerName>:<Port>/<ApplicationName>

    默认值如下:

    http://localhost:5985/WSMAN

    如果不指定连接 URI,则可以使用 UseSSLPort 参数指定连接 URI 值。

    URI 的传输段的有效值为HTTP 和HTTPS。如果您指定带有传输段的连接 URI,但未指定端口,则会使用标准端口创建会话:80(对于 HTTP)和 443(对于 HTTPS)。要使用 PowerShell 远程处理的默认端口,请为 HTTP 指定端口 5985 或为 HTTPS 指定端口 5986

    如果目标计算机将连接重定向到其他 URI,PowerShell 将阻止重定向,除非您在命令中使用 AllowRedirection 参数。

    类型 :

    乌里[]

    别名:

    URI, CU

    位置:

    0

    默认值:

    None

    必需的:

    True

    接受管道输入:

    True

    接受通配符:

    False

    -Credential

    指定有权连接到已断开连接的会话的用户帐户。默认为当前用户。

    输入用户名,例如 User01Domain01\User01,或输入由 Get-Credential 生成的 PSCredential 对象> cmdlet。如果您键入用户名,系统会提示您输入密码。

    凭证存储在 PSCredential 对象中,密码存储为 SecureString。

    笔记

    有关 SecureString 数据保护的更多信息,请参阅 SecureString 的安全性如何?。

    类型 :

    PS凭证

    位置:

    命名

    默认值:

    当前用户

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -Id

    指定已断开连接的会话的 ID。仅当断开连接的会话之前连接到当前会话时,Id 参数才起作用。

    当会话存储在本地计算机上,但未连接到当前会话时,此参数有效,但无效。

    类型 :

    Int32[]

    位置:

    0

    默认值:

    None

    必需的:

    True

    接受管道输入:

    True

    接受通配符:

    False

    -InstanceId

    指定断开连接的会话的实例ID。

    实例 ID 是唯一标识本地或远程计算机上的 PSSession 的 GUID。

    实例 ID 存储在 PSSessionInstanceID 属性中。

    类型 :

    指导[]

    位置:

    命名

    默认值:

    None

    必需的:

    True

    接受管道输入:

    False

    接受通配符:

    False

    -Name

    指定断开连接的会话的友好名称。

    类型 :

    String[]

    位置:

    命名

    默认值:

    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\>

    除非必须,否则不要使用端口参数。命令中设置的端口适用于运行该命令的所有计算机或会话。备用端口设置可能会阻止该命令在所有计算机上运行。

    类型 :

    整数32

    位置:

    命名

    默认值:

    None

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -Session

    指定断开连接的会话。输入包含 PSSession 对象的变量或创建或获取 PSSession 对象的命令,例如 Get-PSSession 命令。

    类型 :

    PS会话[]

    位置:

    0

    默认值:

    None

    必需的:

    True

    接受管道输入:

    True

    接受通配符:

    False

    -SessionOption

    指定会话的高级选项。输入 SessionOption 对象,例如使用 New-PSSessionOption cmdlet 创建的对象,或者一个哈希表,其中键是会话选项名称,值是会话选项值。

    选项的默认值由 $PSSessionOption 首选项变量(如果已设置)的值确定。否则,默认值由会话配置中设置的选项建立。

    会话选项值优先于 $PSSessionOption 首选项变量和会话配置中设置的会话默认值。但是,它们并不优先于会话配置中设置的最大值、配额或限制。

    有关包含默认值的会话选项的说明,请参阅New-PSSessionOption。有关 $PSSessionOption 首选项变量的信息,请参阅 about_Preference_Variables。有关会话配置的更多信息,请参阅 about_Session_Configurations。

    类型 :

    PS会话选项

    位置:

    命名

    默认值:

    None

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -ThrottleLimit

    指定可以建立运行此命令的最大并发连接数。如果省略此参数或输入值 0,则使用默认值 32

    限制仅适用于当前命令,不适用于会话或计算机。

    类型 :

    整数32

    位置:

    命名

    默认值:

    None

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -UseSSL

    指示此 cmdlet 使用安全套接字层 (SSL) 协议连接到断开连接的会话。默认情况下,不使用 SSL。

    WS-Management 对通过网络传输的所有 PowerShell 内容进行加密。 UseSSL 参数是一种附加保护,可通过 HTTPS 连接而不是 HTTP 连接发送数据。

    如果使用此参数,但 SSL 在用于该命令的端口上不可用,则该命令将失败。

    类型 :

    SwitchParameter

    位置:

    命名

    默认值:

    None

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    -WhatIf

    显示 cmdlet 运行时会发生什么情况。该 cmdlet 未运行。

    类型 :

    SwitchParameter

    别名:

    wi

    位置:

    命名

    默认值:

    False

    必需的:

    False

    接受管道输入:

    False

    接受通配符:

    False

    输入

    PS会话

    您可以通过管道将会话 (PSSession) 连接到此 cmdlet。

    输出

    PS会话

    此 cmdlet 返回一个对象,该对象表示它重新连接到的会话。

    笔记

    PowerShell 包含以下 Connect-PSSession 别名:

    • Windows:

        cnsn
    • 此 cmdlet 仅适用于 Windows 平台。

    • Connect-PSSession 仅重新连接到已断开连接的会话,即 State 属性值为 Disconnected 的会话。只有连接到或结束于运行 Windows PowerShell 3.0 或更高版本的计算机的会话才能断开连接并重新连接。

    • 如果您在未断开连接的会话上使用 Connect-PSSession,则该命令不会影响会话,也不会生成错误。

    • 使用 EnableNetworkAccess 参数创建的具有交互式令牌的已断开环回会话只能从创建会话的计算机重新连接。此限制可保护计算机免受恶意访问。

    • PSSessionState 属性值与当前会话相关。因此,值 Disconnected 表示 PSSession 未连接到当前会话。但是,这并不意味着 PSSession 与所有会话断开连接。它可能连接到不同的会话。要确定是否可以连接或重新连接到会话,请使用可用性属性。

      Availability 值为 None 表示您可以连接到会话。 Busy 值表示您无法连接到 PSSession,因为它已连接到另一个会话。

      有关会话的 State 属性值的详细信息,请参阅 RunspaceState 枚举。

      有关会话的 Availability 属性值的详细信息,请参阅 RunspaceAvailability 枚举。

    • 当您连接到 PSSession 时,您无法更改 PSSession 的空闲超时值。 Connect-PSSessionSessionOption 参数采用具有 IdleTimeout 值的 SessionOption 对象。但是,连接时将忽略 SessionOption 对象的 IdleTimeout 值和 $PSSessionOption 变量的 IdleTimeout 值到 PSSession

      您可以在创建 PSSession 时使用 New-PSSession 设置和更改 PSSession 的空闲超时Invoke-Command cmdlet,以及当您与 PSSession 断开连接时。

      PSSessionIdleTimeout 属性对于断开连接的会话至关重要,因为它决定断开连接的会话在远程计算机上维持多长时间。断开连接的会话从断开连接的那一刻起就被视为空闲,即使命令正在断开连接的会话中运行。

    • 您需要 登录账户 后才能发表评论

      取消回复欢迎 发表评论:

      关灯