Enter-PSSession
使用远程计算机启动交互式会话。
语法
ComputerName (默认值)
Enter-PSSession
[-ComputerName] <String>
[-EnableNetworkAccess]
[-Credential <PSCredential>]
[-Port <Int32>]
[-UseSSL]
[-ConfigurationName <String>]
[-ApplicationName <String>]
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[<CommonParameters>]
Session
Enter-PSSession
[[-Session] <PSSession>]
[<CommonParameters>]
Uri
Enter-PSSession
[[-ConnectionUri] <Uri>]
[-EnableNetworkAccess]
[-Credential <PSCredential>]
[-ConfigurationName <String>]
[-AllowRedirection]
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[<CommonParameters>]
InstanceId
Enter-PSSession
[-InstanceId <Guid>]
[<CommonParameters>]
Id
Enter-PSSession
[[-Id] <Int32>]
[<CommonParameters>]
Name
Enter-PSSession
[-Name <String>]
[<CommonParameters>]
VMId
Enter-PSSession
[-VMGuid] <Guid>
-Credential <PSCredential>
[<CommonParameters>]
VMName
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 结束会话。 还可以使用 Exit 关键字结束交互式会话。 Exit-PSSession 和 Exit 具有相同的效果。
参数
-AllowRedirection
允许将此连接重定向到备用统一资源标识符(URI)。 默认情况下,不允许重定向。
使用 ConnectionURI 参数时,远程目标可以返回重定向到其他 URI 的指令。 默认情况下,Windows PowerShell 不会重定向连接,但你可以使用此参数来允许它重定向连接。
还可以通过更改 MaximumConnectionRedirectionCount 会话选项值来限制连接重定向的次数。 使用 New-PSSessionOption cmdlet 的 MaximumRedirection 参数,或设置$PSSessionOption首选项变量的 MaximumConnectionRedirectionCount 属性。 默认值为 5。
参数属性
| 类型: | SwitchParameter |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
Uri
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-ApplicationName
指定连接 URI 的应用程序名称段。 如果不在命令中使用 ConnectionURI 参数,请使用此参数指定应用程序名称。
默认值是本地计算机上的$PSSessionApplicationName首选项变量的值。 如果未定义此首选项变量,则默认值为 WSMAN。 此值适用于大多数用途。 有关详细信息,请参阅about_Preference_Variables。
WinRM 服务使用应用程序名称来选择侦听器来为连接请求提供服务。 此参数的值应与远程计算机上的侦听器的 URLPrefix 属性的值匹配。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
ComputerName
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-Authentication
指定用于对用户凭据进行身份验证的机制。 此参数的可接受值为:
- 违约
- 基本
- Credssp
- 摘要
- Kerberos
- 谈判
- NegotiateWithImplicitCredential
默认值为 Default。
CredSSP 身份验证仅适用于 Windows Vista、Windows Server 2008 和更高版本的 Windows作系统。
有关此参数的值的详细信息,请参阅 MSDN 库中 AuthenticationMechanism 枚举。
警告:凭据安全支持提供程序(CredSSP)身份验证(其中用户凭据传递到要进行身份验证的远程计算机)旨在用于需要对多个资源进行身份验证的命令,例如访问远程网络共享。 此机制会增加远程操作的安全风险。 如果远程计算机遭到入侵,则传递给它的凭据可用于控制网络会话。
参数属性
| 类型: | AuthenticationMechanism |
| 默认值: | None |
| 接受的值: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
| 支持通配符: | False |
| 不显示: | False |
参数集
ComputerName
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
Uri
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-CertificateThumbprint
指定有权执行此操作的用户帐户的数字公钥证书(X509)。 输入证书的证书指纹。
证书用于基于客户端证书的身份验证。 它们只能映射到本地用户帐户;它们不适用于域帐户。
若要获取证书,请使用 Windows PowerShell 证书:驱动器中的 Get-Item 或 Get-ChildItem 命令。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
ComputerName
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
Uri
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-ComputerName
指定计算机名称。 此 cmdlet 使用指定的远程计算机启动交互式会话。 仅输入一个计算机名称。 默认值为本地计算机。
键入 NetBIOS 名称、IP 地址或计算机的完全限定域名。 还可以通过管道将计算机名称传递给 Enter-PSSession。
若要在 ComputerName 参数的值中使用 IP 地址,该命令必须包含 Credential 参数。 此外,必须为计算机配置 HTTPS 传输,或者远程计算机的 IP 地址必须包含在本地计算机上的 WinRM TrustedHosts 列表中。 有关将计算机名称添加到 TrustedHosts 列表的说明,请参阅about_Remote_Troubleshooting中的“如何将计算机添加到受信任的主机列表”。
注意:在 Windows Vista 和更高版本的 Windows 操作系统中,若要将本地计算机包含在 ComputerName 参数的值中,必须使用“以管理员身份运行”选项启动 Windows PowerShell。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
| 别名: | Cn |
参数集
ComputerName
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | True |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-ConfigurationName
指定用于交互式会话的会话配置。
输入会话配置的配置名称或完全限定的资源 URI。
如果仅指定配置名称,则前面有以下架构 URI:https://schemas.microsoft.com/powershell。
会话的会话配置位于远程计算机上。 如果远程计算机上不存在指定的会话配置,命令将失败。
默认值是本地计算机上的$PSSessionConfigurationName首选项变量的值。 如果未设置此首选项变量,则默认值为 Microsoft.PowerShell。 有关详细信息,请参阅about_Preference_Variables。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
ComputerName
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
Uri
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-ConnectionUri
指定一个 URI,用于定义会话的连接终结点。 URI 必须完全限定。 此字符串的格式如下所示:
<传输>://<ComputerName>:<端口>/<ApplicationName>
默认值如下所示:
https://localhost:5985/WSMAN
如果未指定 ConnectionURI,则可以使用 UseSSL、ComputerName、端口和 ApplicationName 参数来指定 ConnectionURI 值。
URI 的传输段的有效值为 HTTP 和 HTTPS。 如果使用传输段指定连接 URI,但不指定端口,则会话是使用标准端口创建的:80 表示 HTTP,对于 HTTPS 为 443。 若要使用 Windows PowerShell 远程处理的默认端口,请为 HTTP 指定端口 5985,或为 HTTPS 指定端口 5986。
如果目标计算机将连接重定向到其他 URI,则除非在命令中使用 AllowRedirection 参数,否则 Windows PowerShell 将阻止重定向。
参数属性
| 类型: | Uri |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
| 别名: | URI, CU |
参数集
Uri
| Position: | 1 |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-Credential
指定有权执行此作的用户帐户。 默认值为当前用户。
键入用户名(如 User01、Domain01\User01或 User@Domain.com),或输入 PSCredential 对象,例如 Get-Credential cmdlet 返回的用户名。
键入用户名时,此 cmdlet 会提示输入密码。
参数属性
| 类型: | PSCredential |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
ComputerName
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
Uri
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
VMId
| Position: | Named |
| 必需: | True |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
VMName
| Position: | Named |
| 必需: | True |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-EnableNetworkAccess
指示此 cmdlet 向环回会话添加交互式安全令牌。 交互式令牌允许在环回会话中运行命令,以便从其他计算机获取数据。 例如,可以在会话中运行将 XML 文件从远程计算机复制到本地计算机的命令。
环回会话是在同一台计算机上发起和结束的 PSSession。 若要创建环回会话,请省略 ComputerName 参数或将其值设置为 。 (dot)、localhost 或本地计算机的名称。
默认情况下,环回会话是使用网络令牌创建的,该令牌可能无法提供对远程计算机进行身份验证的足够权限。
EnableNetworkAccess 参数仅在环回会话中有效。 如果在远程计算机上创建会话时使用 EnableNetworkAccess,则命令会成功,但参数将被忽略。
还可以使用 Authentication 参数的 CredSSP 值(将会话凭据委托给其他计算机)在环回会话中允许远程访问。
此参数是在 Windows PowerShell 3.0 中引入的。
参数属性
| 类型: | SwitchParameter |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
ComputerName
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
Uri
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Id
指定现有会话的 ID。 Enter-PSSession 为交互式会话使用指定的会话。
若要查找会话的 ID,请使用 Get-PSSession cmdlet。
参数属性
| 类型: | Int32 |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
Id
| Position: | 0 |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-InstanceId
指定现有会话的实例 ID。 Enter-PSSession 为交互式会话使用指定的会话。
实例 ID 是 GUID。 若要查找会话的实例 ID,请使用 Get-PSSession cmdlet。 还可以使用 会话、名称或 ID 参数来指定现有会话。 或者,可以使用 ComputerName 参数启动临时会话。
参数属性
| 类型: | Guid |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
InstanceId
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-Name
指定现有会话的友好名称。 Enter-PSSession 为交互式会话使用指定的会话。
如果指定的名称与多个会话匹配,该命令将失败。 还可以使用 Session、InstanceID或 ID 参数来指定现有会话。 或者,可以使用 ComputerName 参数启动临时会话。
若要为会话建立友好名称,请使用 New-PSSession cmdlet 的 Name 参数。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
Name
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | 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 参数。 命令中的端口设置适用于运行命令的所有计算机或会话。 备用端口设置可能会阻止命令在所有计算机上运行。
参数属性
| 类型: | Int32 |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
ComputerName
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-Session
指定用于交互式会话的 Windows PowerShell 会话(PSSession)。 此参数采用会话对象。 还可以使用 名称、InstanceID或 ID 参数来指定 PSSession。
输入包含会话对象或创建或获取会话对象的命令的变量,例如 New-PSSession 或 Get-PSSession 命令。 还可以通过管道将会话对象传递给 Enter-PSSession。 只能使用此参数提交一个 PSSession。 如果输入包含多个 PSSession的变量,该命令将失败。
使用 exit-PSSession 或 EXIT 关键字时,交互式会话将结束,但创建的 PSSession 仍保持打开状态,可供使用。
参数属性
| 类型: | PSSession |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
Session
| Position: | 0 |
| 必需: | False |
| 来自管道的值: | True |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-SessionOption
设置会话的高级选项。 输入 SessionOption 对象,例如,使用 New-PSSessionOption cmdlet 创建的对象,或键是会话选项名称和值是会话选项值的哈希表。
选项的默认值由$PSSessionOption首选项变量的值(如果已设置)确定。 否则,默认值由会话配置中设置的选项建立。
会话选项值优先于在$PSSessionOption首选项变量和会话配置中设置的会话的默认值。 但是,它们不优先于会话配置中设置的最大值、配额或限制。
有关会话选项的说明(包括默认值)请参阅 New-PSSessionOption。 有关$PSSessionOption首选项变量的信息,请参阅 about_Preference_Variables。 有关会话配置的详细信息,请参阅 about_Session_Configurations。
参数属性
| 类型: | PSSessionOption |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
ComputerName
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
Uri
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-UseSSL
指示此 cmdlet 使用安全套接字层 (SSL) 协议建立与远程计算机的连接。 默认情况下,不使用 SSL。
WS-Management 加密通过网络传输的所有 Windows PowerShell 内容。 UseSSL 参数是一种额外的保护,用于跨 HTTPS 连接而不是 HTTP 连接发送数据。
如果使用此参数,但 SSL 在用于命令的端口上不可用,命令将失败。
参数属性
| 类型: | SwitchParameter |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
ComputerName
| Position: | Named |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-VMGuid
指定虚拟机的 ID。
参数属性
| 类型: | Guid |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
VMId
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | True |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-VMName
指定虚拟机的名称。
参数属性
| 类型: | String |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
VMName
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | True |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
CommonParameters
此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters。
输入
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。