启动与远程计算机间的交互式会话。
语法
Enter-PSSession [-ComputerName] <string> [-ApplicationName <string>] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-CertificateThumbprint <string>] [-ConfigurationName <string>] [-Credential <PSCredential>] [-Port <int>] [-SessionOption <PSSessionOption>] [-UseSSL] [<CommonParameters>] Enter-PSSession [[-Id] <int>] [<CommonParameters>] Enter-PSSession [-InstanceId <Guid>] [<CommonParameters>] Enter-PSSession [-Name <string>] [<CommonParameters>] Enter-PSSession [[-Session] <PSSession>] [<CommonParameters>] Enter-PSSession [[-ConnectionURI] <Uri>] [-AllowRedirection] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-CertificateThumbprint <string>] [-ConfigurationName <string>] [-Credential <PSCredential>] [-SessionOption <PSSessionOption>] [<CommonParameters>]
说明
Enter-PSSession cmdlet 可启动与单个远程计算机间的交互式会话。会话期间,键入的命令会在远程计算机上运行,就像直接在远程计算机上键入命令一样。一次只能有一个交互式会话。
通常,使用 ComputerName 参数指定远程计算机的名称。不过,也可以使用通过 New-PSSession 创建的会话进行交互式会话。
要结束交互式会话并断开与远程计算机的连接,请使用 Exit-PSSession cmdlet 或键入“exit”。
参数
-AllowRedirection
允许将此连接重定向到备用统一资源标识符 (URI)。
使用 ConnectionURI 参数时,远程目标可以返回重定向到另一 URI 的指令。默认情况下,Windows PowerShell 不会重定向连接,但您可以使用此参数允许它重定向连接。
允许将此连接重定向到备用 URI。
使用 ConnectionURI 参数时,远程目标可以返回重定向到另一 URI 的指令。默认情况下,Windows PowerShell 不会重定向连接,但您可以使用 AllowRedirection 参数允许它重定向连接。
也可以通过设置 $PSSessionOption 首选项变量的 MaximumConnectionRedirectionCount 属性或 SessionOption 参数值的 MaximumConnectionRedirectionCount 属性来限制重定向连接的次数。默认值为 5。有关详细信息,请参阅 SessionOption 参数的说明以及 New-PSSessionOption。
是否为必需? |
false |
位置? |
named |
默认值 |
False |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ApplicationName <string>
指定连接 URI 的应用程序名称段。使用此参数可在命令中未使用 ConnectionURI 参数时指定应用程序名称。
默认值为本地计算机上的 $PSSessionApplicationName 首选项变量的值。如果未定义此首选项变量,则默认值为 WSMAN。该值适用于大多数使用情况。有关详细信息,请参阅 about_Preference_Variables。
WinRM 服务使用该应用程序名称来选择为连接请求提供服务的侦听器。此参数的值应与远程计算机上的侦听器的 URLPrefix 属性值匹配。
是否为必需? |
false |
位置? |
named |
默认值 |
WSMAN |
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-Authentication <AuthenticationMechanism>
指定用于对用户的凭据进行身份验证的机制。有效值为“Default”、“Basic”、“Credssp”、“Digest”、“Kerberos”、“Negotiate”和“NegotiateWithImplicitCredential”。默认值为“Default”。
CredSSP 身份验证仅在 Windows Vista、Windows Server 2008 和更高版本的 Windows 中可用。
有关此参数的值的信息,请参阅 MSDN (Microsoft Developer Network) Library 中对 System.Management.Automation.Runspaces.AuthenticationMechanism 枚举的说明,网址是 https://go.microsoft.com/fwlink/?LinkId=144382。
注意:在凭据安全服务提供程序 (CredSSP) 身份验证中,用户凭据传递到远程计算机中以进行验证,这种验证用于要求对多个资源(例如访问远程网络共享)进行验证的命令。此机制增加了远程操作的安全风险。如果远程计算机的安全受到威胁,则传递给该计算机的凭据可用于控制网络会话。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-CertificateThumbprint <string>
指定有权执行此操作的用户帐户的数字公钥证书 (X509)。输入证书的证书指纹。
证书用于基于客户端证书的身份验证。证书只能映射到本地用户帐户,而不适用于域帐户。
若要获取证书指纹,请在 Windows PowerShell Cert: 驱动器中使用 Get-Item 或 Get-ChildItem 命令。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ComputerName <string>
启动与指定的远程计算机间的交互式会话。只输入一个计算机名称。默认值为本地计算机。
键入一台或多台远程计算机的 NetBIOS 名称、IP 地址或完全限定的域名。也可通过管道将计算机名称传送给 Enter-PSSession。
若要在 ComputerName 参数的值中使用 IP 地址,命令必须包括 Credential 参数。另外,必须为计算机配置 HTTPS 传输,或者必须在本地计算机上的 WinRM TrustedHosts 列表中包含远程计算机的 IP 地址。有关将计算机名称添加到 TrustedHosts 列表的说明,请参阅 about_Remote_Troubleshooting 中的“如何将计算机添加到受信任主机列表中”。
注意:在 Windows Vista 以及更高版本的 Windows 中,要在 ComputerName 参数的值中包含本地计算机,必须使用“以管理员身份运行”选项启动 Windows PowerShell。
是否为必需? |
true |
位置? |
1 |
默认值 |
|
是否接受管道输入? |
true (ByValue, ByPropertyName) |
是否接受通配符? |
false |
-ConfigurationName <string>
指定用于交互式会话的会话配置。
输入会话配置的配置名称或完全限定的资源 URI。如果只指定配置名称,那么将在该名称前面添加以下架构 URI:https://schemas.microsoft.com/powershell。
会话的会话配置位于远程计算机上。如果远程计算机上不存在指定的会话配置,命令会失败。
默认值为本地计算机上的 $PSSessionConfigurationName 首选项变量的值。如果未设置此首选项变量,则默认为 Microsoft.PowerShell。有关详细信息,请参阅 about_Preference_Variables。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-ConnectionURI <Uri>
指定定义交互式会话的连接终结点的统一资源标识符 (URI)。URI 必须完全限定。
此字符串的格式如下:
<Transport>://<ComputerName>:<Port>/<ApplicationName>
默认值如下:
http://localhost:80/WSMAN
URI 的 Transport 段的有效值为 HTTP 和 HTTPS。如果未指定 ConnectionURI,则可以使用 UseSSL、ComputerName、Port 和 ApplicationName 参数指定 URI 值。
如果目标计算机将连接重定向到另一个 URI,Windows PowerShell 将阻止重定向,除非您在命令中使用了 AllowRedirection 参数。
是否为必需? |
false |
位置? |
2 |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-Credential <PSCredential>
指定有权执行此操作的用户帐户。默认值为当前用户。
键入用户名,如“User01”、“Domain01\User01”或“User@Domain.com”,或输入 PSCredential 对象,如 Get-Credential cmdlet 返回的一个 PSCredential 对象。
键入用户名时,将会提示您键入密码。
是否为必需? |
false |
位置? |
named |
默认值 |
Current user |
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-Id <int>
指定现有会话的 ID。Enter-PSSession 使用指定的会话进行交互式会话。
要查找某个会话的 ID,请使用 Get-PSSession cmdlet。
是否为必需? |
false |
位置? |
1 |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-InstanceId <Guid>
指定现有会话的实例 ID。Enter-PSSession 使用指定的会话进行交互式会话。
实例 ID 即为 GUID。要查找某个会话的实例 ID,请使用 Get-PSSession cmdlet。也可使用 Session、Name 或 ID 参数指定一个现有会话。此外,还可以使用 ComputerName 参数启动一个临时会话。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-Name <string>
指定现有会话的友好名称。Enter-PSSession 使用指定的会话进行交互式会话。
如果指定的名称与多个会话匹配,该命令会失败。也可使用 Session、InstanceID 或 ID 参数指定一个现有会话。此外,还可以使用 ComputerName 参数启动一个临时会话。
若有为会话建立友好名称,请使用 New-PSSession cmdlet 的 Name 参数。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
true (ByPropertyName) |
是否接受通配符? |
false |
-Port <int>
指定远程计算机上用于此命令的网络端口。默认值为端口 80(HTTP 端口)。
使用备用端口之前,必须将远程计算机上的 WinRM 侦听器配置为侦听该端口。使用下面的命令配置该侦听器:
1. winrm delete winrm/config/listener?Address=*+Transport=HTTP
2. winrm create winrm/config/listener?Address=*+Transport=HTTP @{Port="<port-number>"}
除非确有必要,否则不要使用 Port 参数。命令中的端口设置应用于运行该命令的所有计算机或会话。备用端口设置可能使该命令无法在所有计算机上运行。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Session <PSSession>
指定用于交互式会话的 Windows PowerShell 会话 (PSSession)。此参数获取一个会话对象。还可使用 Name、InstanceID 或 ID 参数指定一个 PSSession。
输入包含会话对象的变量或者用来创建或获取会话对象的命令,如 New-PSSession 或 Get-PSSession 命令。也可以通过管道将会话传送给 Enter-PSSession。使用此参数只能提交一个 PSSession。如果输入的变量包含多个 PSSession,该命令会失败。
使用 Exit-PSSession 或 EXIT 关键字时,交互式会话会结束,但已创建的 PSSession 仍旧开放,可供使用。
是否为必需? |
false |
位置? |
1 |
默认值 |
|
是否接受管道输入? |
true (ByValue, ByPropertyName) |
是否接受通配符? |
true |
-SessionOption <PSSessionOption>
为会话设置高级选项。输入使用 New-PSSessionOption cmdlet 创建的 SessionOption 对象。
这些选项的默认值由 $PSSessionOption 首选项变量的值(如果设置了该变量)确定。否则,会话使用系统默认值。
有关会话选项(包括默认值)的说明,请参阅 New-PSSessionOption。有关 $PSSessionOption 首选项变量的信息,请参阅 about_Preference_Variables。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-UseSSL
使用安全套接字层 (SSL) 协议来建立与远程计算机的连接。默认情况下,不使用 SSL。
WS-Management 加密通过网络传输的所有 Windows PowerShell 内容。UseSSL 是一种额外的保护措施,它通过 HTTPS 连接而不是 HTTP 连接来发送数据。
如果使用此参数,但 SSL 在用于此命令的端口上不可用,命令将失败。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
<CommonParameters>
此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.
输入和输出
输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。
输入 |
System.String or System.Management.Automation.Runspaces.PSSession 可以通过管道将计算机名称(字符串)或会话对象传递给 Enter-PSSession。 |
输出 |
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 不对命令进行解释而直接将其发送到远程计算机。
示例 1
C:\PS>Enter-PSSession LocalHost\PS> 说明 ----------- 此命令在本地计算机上启动一个交互式会话。命令提示符会改变以指示现在正在一个不同的会话中运行命令。 输入的命令在新的会话中运行,命令结果会以文本形式返回到默认会话。
示例 2
C:\PS>enter-pssession -computer Server01 Server01\PS> get-process powershell > C:\ps-test\process.txt Server01\PS> exit-pssession C:\PS> C:\PS> 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 说明 ----------- 此命令说明如何工作在与远程计算机建立的交互式会话中。 第一条命令使用 Enter-PSSession cmdlet 启动一个与远程计算机 Server01 的交互式会话。会话启动时,命令提示符变为包括该计算机名称。 第二条命令获取 PowerShell 进程并将输出重定向到 Process.txt 文件。该命令提交到远程计算机,并且 Process.txt 文件也保存在远程计算机上。 第三条命令使用 Exit 关键字来结束交互式会话并关闭连接。 第四条命令确认 Process.txt 文件位于远程计算机上。在本地计算机上运行 Get-ChildItem(“dir”)命令无法找到该文件。
示例 3
C:\PS>$s = new-pssession -computername Server01 C:\PS> Enter-PSSession -session $s Server01\PS> 说明 ----------- 这些命令使用 Enter-PSSession 的 Session 参数在现有的 Windows PowerShell 会话 (PSSession) 中运行交互式会话。
示例 4
C:\PS>Enter-PSSession -computername Server01 -port 90 -credential domain01\user01 Server01\PS> 说明 ----------- 此命令启动与 Server01 计算机的交互式会话。它使用 Port 参数指定端口,使用 Credential 参数指定有权连接到远程计算机的用户的帐户。
示例 5
C:\PS>Enter-PSSession -computername Server01 Server01:\PS> Exit-PSSession C:\PS> 说明 ----------- 此示例说明如何启动和停止一个交互式会话。第一条命令使用 Enter-PSSession cmdlet 启动了一个与计算机 Server01 的交互式会话。 第二条命令使用 Exit-PSSession cmdlet 来结束会话。也可使用 Exit 关键字来结束该交互式会话。Exit-PSSession 和 Exit 具有相同的效果。
另请参阅