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

语法

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-ItemGet-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-PSSessionGet-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 具有相同的效果。






另请参阅




目录