Enter-PSSession

启动与远程计算机的交互式会话。

语法

Enter-PSSession
     [-ComputerName] <String>
     [-EnableNetworkAccess]
     [-Credential <PSCredential>]
     [-Port <Int32>]
     [-UseSSL]
     [-ConfigurationName <String>]
     [-ApplicationName <String>]
     [-SessionOption <PSSessionOption>]
     [-Authentication <AuthenticationMechanism>]
     [-CertificateThumbprint <String>]
     [<CommonParameters>]
Enter-PSSession
     [[-Session] <PSSession>]
     [<CommonParameters>]
Enter-PSSession
     [[-ConnectionUri] <Uri>]
     [-EnableNetworkAccess]
     [-Credential <PSCredential>]
     [-ConfigurationName <String>]
     [-AllowRedirection]
     [-SessionOption <PSSessionOption>]
     [-Authentication <AuthenticationMechanism>]
     [-CertificateThumbprint <String>]
     [<CommonParameters>]
Enter-PSSession
     [-InstanceId <Guid>]
     [<CommonParameters>]
Enter-PSSession
     [[-Id] <Int32>]
     [<CommonParameters>]
Enter-PSSession
     [-Name <String>]
     [<CommonParameters>]
Enter-PSSession
     [-VMGuid] <Guid>
     -Credential <PSCredential>
     [<CommonParameters>]
Enter-PSSession
     [-VMName] <String>
     -Credential <PSCredential>
     [<CommonParameters>]

说明

Enter-PSSession cmdlet 可启动与单台远程计算机的交互式会话。 在会话期间,键入的命令在远程计算机上运行,就像直接在远程计算机上键入一样。 一次只可以进行一个交互式会话。

通常,你可以使用 ComputerName 参数来指定远程计算机的名称。 但是,也可以使用交互式会话的 New-PSSession cmdlet 创建的会话。 但是,不能使用 Disconnect-PSSession、Connect-PSSession 或 Receive-PSSession cmdlet 与交互式会话断开连接或重新连接到交互会话。

若要结束交互式会话并从远程计算机断开连接,请使用 Exit-PSSession cmdlet 或键入 exit

示例

示例 1:启动交互式会话

PS C:\> Enter-PSSession
[localhost]: PS C:\>

此命令将在本地计算机上启动交互式会话。 命令提示符将发生更改,以指示你现在正在不同的会话中运行命令。

你输入的命令将在该新会话中运行,而结果将以文本形式返回到默认会话中。

示例 2:使用交互式会话

The first command uses the **Enter-PSSession** cmdlet to start an interactive session with Server01, a remote computer. When the session starts, the command prompt changes to include the computer name.
PS C:\> Enter-PSSession -ComputerName Server01
[Server01]: PS C:\>

The second command gets the Windows PowerShell process and redirects the output to the Process.txt file. The command is submitted to the remote computer, and the file is saved on the remote computer.
[Server01]: PS C:\> Get-Process PowerShell > C:\ps-test\Process.txt

The third command uses the **Exit** keyword to end the interactive session and close the connection.
[Server01]: PS C:\> exit
PS C:\>

The fourth command confirms that the Process.txt file is on the remote computer. A **Get-ChildItem** ("dir") command on the local computer cannot find the file.
PS C:\> dir C:\ps-test\process.txt
Get-ChildItem : Cannot find path 'C:\ps-test\process.txt' because it does not exist.
At line:1 char:4
+ dir <<<<  c:\ps-test\process.txt

此命令显示了如何在与远程计算机的交互式会话中进行工作。

示例 3:使用 Session 参数

PS C:\> $s = New-PSSession -ComputerName Server01
PS C:\> Enter-PSSession -Session $s
[Server01]: PS C:\>

这些命令使用 Enter-PSSessionSession 参数在现有Windows PowerShell会话 (PSSession) 中运行交互式会话。

示例 4:启动交互式会话并指定端口和凭据参数

PS C:\> Enter-PSSession -ComputerName Server01 -Port 90 -Credential Domain01\User01
[Server01]: PS C:\>

此命令启动与 Server01 计算机的交互式会话。 它使用 Port 参数指定端口, 使用 Credential 参数指定有权连接到远程计算机的用户的帐户。

示例 5:停止交互式会话

PS C:\> Enter-PSSession -ComputerName Server01
[Server01]: PS C:\> Exit-PSSession
PS C:\>

此示例显示了如何启动和停止交互式会话。 第一个命令使用 Enter-PSSession cmdlet 启动与 Server01 计算机的交互式会话。

第二个命令使用 Exit-PSSession cmdlet 结束会话。 还可以使用退出关键字 (keyword) 结束交互式会话。 Exit-PSSessionExit 具有相同的效果。

参数

-AllowRedirection

允许将此连接重定向到备用统一资源标识符 (URI)。 默认情况下,不允许重定向。

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

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ApplicationName

指定连接 URI 的应用程序名称段。 当命令中未使用 ConnectionURI 参数时,请使用此参数指定应用程序名称。

默认值为本地计算机上的 $PSSessionApplicationName 首选项变量的值。 如果未定义此首选项变量,则默认值为 WSMAN。 该值适用于大多数使用情况。 有关详细信息,请参阅 about_Preference_Variables。

WinRM 服务使用应用程序名称来选择一个侦听器来为连接请求提供服务。 此参数的值应与远程计算机上的侦听器的 URLPrefix 属性值匹配。

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

-Authentication

指定用于对用户的凭据进行身份验证的机制。 此参数的可接受值为:

  • Default
  • 基本
  • Credssp
  • 摘要
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

默认值为 Default。

CredSSP 身份验证仅在 Windows Vista、Windows Server 2008 和更高版本的 Windows 操作系统中可用。

有关此参数的值的详细信息,请参阅 MSDN 库中的 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)。 输入证书的证书指纹。

在基于客户端证书的身份验证中使用证书。 证书只能映射到本地用户帐户,而不适用于域帐户。

若要获取证书,请在 Windows PowerShell Cert: 驱动器中使用 Get-Item 或 Get-ChildItem 命令。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

指定计算机名称。 此 cmdlet 与指定的远程计算机启动交互式会话。 仅输入一个计算机名称。 默认为本地计算机。

键入计算机的 NetBIOS 名称、IP 地址或完全限定的域名。 还可以通过管道将计算机名称传递给 Enter-PSSession

若要在 ComputerName 参数的值中使用 IP 地址,该命令必须包含 Credential 参数。 此外,必须为计算机配置 HTTPS 传输,或者必须在本地计算机上的 WinRM TrustedHosts 列表中包含远程计算机的 IP 地址。 有关将计算机名称添加到 TrustedHosts 列表的说明,请参阅 about_Remote_Troubleshooting 中的“如何将计算机添加到受信任主机列表中”。

注意:在 Windows Vista 和更高版本的 Windows 操作系统中,若要在 ComputerName 参数的值中包含本地计算机,必须使用“以管理员身份运行”选项开始Windows PowerShell。

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

-ConfigurationName

指定用于交互式会话的会话配置。

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

会话的会话配置位于远程计算机上。 如果远程计算机上不存在指定的会话配置,则该命令会失败。

默认值为本地计算机上的 $PSSessionConfigurationName 首选项变量的值。 如果未设置此首选项变量,则默认值为 Microsoft.PowerShell。 有关详细信息,请参阅 about_Preference_Variables。

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

-ConnectionUri

指定定义会话的连接终结点的 URI。 URI 必须完全限定。 此字符串的格式如下:

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

默认值如下:

https://localhost:5985/WSMAN

如果未指定 ConnectionURI,则可以使用 UseSSLComputerNamePortApplicationName 参数来指定 ConnectionURI 值。

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

如果目标计算机将连接重定向到另一个 URI,Windows PowerShell 将阻止重定向,除非你在命令中使用了 AllowRedirection 参数。

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

-Credential

指定有权执行此操作的用户帐户。 默认为当前用户。

键入用户名(如 User01Domain01\User01User@Domain.com),或输入 PSCredential 对象,例如 Get-Credential cmdlet 返回的一个。

键入用户名时,此 cmdlet 会提示输入密码。

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-EnableNetworkAccess

指示此 cmdlet 将交互式安全令牌添加到环回会话。 通过交互式令牌,你可以在环回会话中运行用于获取其他计算机中的数据的命令。 例如,你可以在该会话中运行用于将 XML 文件从远程计算机复制到本地计算机的命令。

环回会话是在同一计算机上开始并终止的 PSSession。 若要创建环回会话,请省略 ComputerName 参数或将其值设置为 。 (点) 、localhost 或本地计算机的名称。

默认情况下,环回会话是使用网络令牌创建的,该令牌可能无法提供足够的权限来对远程计算机进行身份验证。

EnableNetworkAccess 参数仅在环回会话中有效。 如果在远程计算机上创建会话时使用 EnableNetworkAccess ,则命令会成功,但参数将被忽略。

通过用于将会话凭据委派给其他计算机的 CredSSP 参数的 Authentication 值,你还可以在环回会话中进行远程访问。

已在 Windows PowerShell 3.0 中引入了此参数。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

指定现有会话的 ID。 Enter-PSSession 使用交互式会话的指定会话。

若要查找某个会话的 ID,请使用 Get-PSSession cmdlet。

Type:Int32
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-InstanceId

指定现有会话的实例 ID。 Enter-PSSession 使用交互式会话的指定会话。

实例 ID 是一个 GUID。 若要查找会话的实例 ID,请使用 Get-PSSession cmdlet。 还可以使用 SessionNameID 参数来指定现有会话。 或者,可以使用 ComputerName 参数启动临时会话。

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

-Name

指定现有会话的友好名称。 Enter-PSSession 使用交互式会话的指定会话。

如果你指定的名称与多个会话相匹配,则该命令会失败。 还可以使用 SessionInstanceIDID 参数来指定现有会话。 或者,可以使用 ComputerName 参数启动临时会话。

若要为会话建立友好名称,请使用 New-PSSession cmdlet 的 Name 参数。

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

-Port

指定远程计算机上用于此命令的网络端口。 若要连接到一台远程计算机,则必须在该连接所用的端口上侦听远程计算机。 默认端口为 5985(HTTP 的 WinRM 端口)和 5986(HTTPS 的 WinRM 端口)。

使用备用端口之前,你必须在远程计算机上配置 WinRM 侦听器,才能在该端口上进行侦听。 使用以下命令配置侦听器:

1. winrm delete winrm/config/listener?Address=*+Transport=HTTP

2. winrm create winrm/config/listener?Address=*+Transport=HTTP @{Port="\<port-number\>"}

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

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Session

指定要用于交互式会话 (PSSession) 的Windows PowerShell会话。 此参数获取一个会话对象。 还可以使用 NameInstanceIDID 参数来指定 PSSession

输入包含会话对象的变量或创建或获取会话对象的命令,例如 New-PSSessionGet-PSSession 命令。 还可以通过管道将会话对象传递给 Enter-PSSession。 使用此参数只能提交一个 PSSession 。 如果输入包含多个 PSSession 的变量,则命令将失败。

使用 Exit-PSSessionEXIT 关键字 (keyword) 时,交互式会话结束,但你创建的 PSSession 将保持打开状态并可供使用。

Type:PSSession
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-SessionOption

为该会话设置高级选项。 输入 SessionOption 对象,例如使用 New-PSSessionOption cmdlet 创建的会话选项对象,或其中键为会话选项名称且值为会话选项值的哈希表。

这些选项的默认值由 $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

-UseSSL

指示此 cmdlet 使用安全套接字层 (SSL) 协议来建立与远程计算机的连接。 默认情况下,不使用 SSL。

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

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-VMGuid

指定虚拟机的 ID。

Type:Guid
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-VMName

指定虚拟机的名称。

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

输入

System.String, System.Management.Automation.Runspaces.PSSession

可以将计算机名称作为字符串或会话对象通过管道传递给此 cmdlet。

输出

None

该 cmdlet 不返回任何输出。

备注

  • 若要连接到远程计算机,你必须是该远程计算机上 Administrators 组的成员。
  • 在 Windows Vista 和更高版本的 Windows 操作系统中,若要在本地计算机上启动交互式会话,必须使用“以管理员身份运行”选项启动Windows PowerShell。
  • 使用 Enter-PSSession 时,远程计算机上的用户配置文件将用于交互式会话。 远程用户配置文件中的命令(包括用于添加 Windows PowerShell 管理单元和更改命令提示符的命令)将在显示远程提示之前运行。
  • Enter-PSSession 使用本地计算机上的 UI 区域性设置进行交互式会话。 若要查找本地 UI 区域性,请使用 $UICulture 自动变量。
  • Enter-PSSession 需要 Get-Command、Out-Default 和 Exit-PSSession cmdlet。 如果远程计算机上的会话配置中不包含这些 cmdlet, 则 Enter-PSSession 命令将失败。
  • 与 Invoke-Command(在将命令发送到远程计算机之前分析和解释命令)不同, Enter-PSSession 将命令直接发送到远程计算机,而无需解释。
  • 如果要输入的会话正忙于处理命令,Windows PowerShell响应 Enter-PSSession 命令之前可能存在延迟。 该会话可用后将立即与你建立连接。 若要取消 Enter-PSSession 命令,请按 CTRL+C