Enter-PSSession

使用远程计算机启动交互式会话。

语法

ComputerName (默认值)

Enter-PSSession
    [-ComputerName] <String>
    [[-Credential] <PSCredential>]
    [-EnableNetworkAccess]
    [-ConfigurationName <String>]
    [-Port <Int32>]
    [-UseSSL]
    [-ApplicationName <String>]
    [-SessionOption <PSSessionOption>]
    [-Authentication <AuthenticationMechanism>]
    [-CertificateThumbprint <String>]
    [<CommonParameters>]

SSHHost

Enter-PSSession
    [-HostName] <String>
    [-Options <Hashtable>]
    [-Port <Int32>]
    [-UserName <String>]
    [-KeyFilePath <String>]
    [-Subsystem <String>]
    [-ConnectingTimeout <Int32>]
    [-SSHTransport]
    [<CommonParameters>]

Session

Enter-PSSession
    [[-Session] <PSSession>]
    [<CommonParameters>]

Uri

Enter-PSSession
    [[-ConnectionUri] <Uri>]
    [[-Credential] <PSCredential>]
    [-EnableNetworkAccess]
    [-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
    [-VMId] <Guid>
    [-Credential] <PSCredential>
    [-ConfigurationName <String>]
    [<CommonParameters>]

VMName

Enter-PSSession
    [-VMName] <String>
    [-Credential] <PSCredential>
    [-ConfigurationName <String>]
    [<CommonParameters>]

ContainerId

Enter-PSSession
    [-ContainerId] <String>
    [-ConfigurationName <String>]
    [-RunAsAdministrator]
    [<CommonParameters>]

说明

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

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

从 PowerShell 6.0 开始,如果本地计算机上有 SSH 可用,并且远程计算机配置了 PowerShell SSH 终结点,则可以使用安全外壳 (SSH) 建立与远程计算机的连接。 基于 SSH 的 PowerShell 远程会话的好处是,它适用于多个平台(Windows、Linux、macOS)。 对于基于 SSH 的远程处理,请使用 HostName 参数集来指定远程计算机和相关连接信息。 有关如何设置 PowerShell SSH 远程处理的详细信息,请参阅 PowerShell 远程处理 Over SSH

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

示例

示例 1:启动交互式会话

PS> Enter-PSSession
[localhost]: PS>

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

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

示例 2:使用交互式会话

第一个命令使用 Enter-PSSession cmdlet 启动与 Server01(远程计算机)的交互式会话。 会话启动时,命令提示符将更改为包含计算机名称。

第二个命令获取 PowerShell 进程并将输出重定向到 Process.txt 文件。 该命令将提交到远程计算机,文件保存在远程计算机上。

第三个命令使用 Exit 关键字结束交互式会话并关闭连接。 第四个命令确认 Process.txt 文件位于远程计算机上。 本地计算机上的 Get-ChildItem(“dir”)命令找不到该文件。

PS C:\> Enter-PSSession -ComputerName Server01
[Server01]: PS C:\>
[Server01]: PS C:\> Get-Process PowerShell > C:\ps-test\Process.txt
[Server01]: PS C:\> exit
PS C:\>
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> $s = New-PSSession -ComputerName Server01
PS> Enter-PSSession -Session $s
[Server01]: PS>

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

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

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

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

示例 5:停止交互式会话

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

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

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

示例 6:使用 SSH 启动交互式会话

PS> Enter-PSSession -HostName UserA@LinuxServer01

此示例演示如何使用安全外壳(SSH)启动交互式会话。 如果在远程计算机上配置 SSH 以使用密码,系统会提示输入密码。 否则,必须使用基于密钥的用户身份验证。

示例 7:使用 SSH 和端口和用户身份验证密钥启动交互式会话

PS> Enter-PSSession -HostName UserA@LinuxServer02:22 -KeyFilePath c:\sshkeys\userAKey_rsa

此示例演示如何使用 SSH 启动交互式会话。 用户名和 SSH 端口号指定为 HostName 参数值的一部分。 KeyFilePath 参数指定用于对远程计算机上的用户进行身份验证的 RSA 密钥的位置。

示例 8:使用 SSH 选项启动交互式会话

$options = @{
    Port=22
    User = 'UserA'
    Host = 'LinuxServer02'
}
Enter-PSSession -KeyFilePath c:\sshkeys\userAKey_rsa -Options $options

此示例演示如何使用 SSH 启动交互式会话。 Options 参数采用作为选项传递给基础 ssh 命令的值的哈希表,这些值与远程系统建立的连接。

参数

-AllowRedirection

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

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

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

参数属性

类型:SwitchParameter
默认值:False
支持通配符: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作系统。

有关此参数的值的详细信息,请参阅 AuthenticationMechanism Enum

谨慎

凭据安全支持提供程序(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)。 输入证书的证书指纹。

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

若要获取证书,请使用 PowerShell 证书: 驱动器中的 Get-ItemGet-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作系统上,若要将本地计算机包含在 ComputerName 参数的值中,必须使用“以管理员身份运行”选项启动 PowerShell。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False
别名:Cn

参数集

ComputerName
Position:0
必需:True
来自管道的值:True
来自管道的值(按属性名称):True
来自剩余参数的值:False

-ConfigurationName

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

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

与 SSH 一起使用时,这会指定要在目标上使用的子系统,如sshd_config中定义。 SSH 的默认值为 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
VMId
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False
VMName
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False
ContainerId
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-ConnectingTimeout

指定初始 SSH 连接完成所允许的时间(以毫秒为单位)。 如果连接未在指定时间内完成,则返回错误。

此参数是在 PowerShell 7.2 中引入的

参数属性

类型:Int32
默认值:unlimited
支持通配符:False
不显示:False

参数集

SSHHost
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ConnectionUri

指定一个 URI,用于定义会话的连接终结点。 URI 必须完全限定。 此字符串的格式如下所示:

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

默认值如下所示:

http://localhost:5985/WSMAN

如果未指定 ConnectionURI,则可以使用 UseSSLComputerName端口ApplicationName 参数来指定 ConnectionURI 值。

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

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

参数属性

类型:Uri
默认值:None
支持通配符:False
不显示:False
别名:URI, CU

参数集

Uri
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-ContainerId

指定容器的 ID。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

ContainerId
Position:0
必需:True
来自管道的值:True
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Credential

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

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

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

注释

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

参数属性

类型:PSCredential
默认值:Current user
支持通配符:False
不显示:False

参数集

ComputerName
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False
Uri
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False
VMId
Position:1
必需:True
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False
VMName
Position:1
必需:True
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-EnableNetworkAccess

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

环回会话是在同一台计算机上发起和结束的 PSSession。 若要创建环回会话,请省略 ComputerName 参数或将其值设置为 。 (dot)、localhost 或本地计算机的名称。

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

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

还可以使用 Authentication 参数的 CredSSP 值(将会话凭据委托给其他计算机)在环回会话中允许远程访问。

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

ComputerName
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
Uri
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-HostName

为基于安全外壳(SSH)的连接指定计算机名称。 这类似于 ComputerName 参数,但与远程计算机的连接是使用 SSH 而不是 Windows WinRM 进行的。 此参数支持使用表单 user@hostname:port将用户名和/或端口指定为主机名参数值的一部分。 指定为主机名的一部分的用户名和/或端口优先于 -UserName-Port 参数(如果指定)。 这允许将多个计算机名称传递给此参数,其中一些人具有特定的用户名和/或端口,而另一些则使用 -UserName 和/或端口中的用户名和/或端口,并 -Port 参数。

此参数是在 PowerShell 6.0 中引入的。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

SSHHost
Position:0
必需:True
来自管道的值:True
来自管道的值(按属性名称):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

-KeyFilePath

指定安全外壳(SSH)用于对远程计算机上的用户进行身份验证的密钥文件路径。

SSH 允许通过私钥/公钥执行用户身份验证,作为基本密码身份验证的替代方法。 如果远程计算机配置为进行密钥身份验证,则可以使用此参数提供标识用户的密钥。

此参数是在 PowerShell 6.0 中引入的。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False
别名:IdentityFilePath

参数集

SSHHost
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Name

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

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

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

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

Name
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Options

指定连接到基于 SSH 的远程会话时使用的 SSH 选项的哈希表。 可能的选项是基于 Unix 的 ssh 命令版本支持的任何值。

参数显式传递的任何值都优先于 选项 哈希表中传递的值。 例如,使用 Port 参数将替代在 Port hashtable 中传递的任何 键值对。

参数属性

类型:Hashtable
默认值:None
支持通配符:False
不显示:False

参数集

SSHHost
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Port

指定用于此命令的远程计算机上的网络端口。

在 PowerShell 6.0 中,此参数包含在支持 Secure Shell (SSH) 连接的 HostName 参数集中。

WinRM (ComputerName 参数集)

若要连接到远程计算机,远程计算机必须侦听连接使用的端口。 默认端口为 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 参数。 命令中的端口设置适用于运行命令的所有计算机或会话。 备用端口设置可能会阻止命令在所有计算机上运行。

SSH (HostName 参数集)

若要连接到远程计算机,必须将远程计算机配置为 SSH 服务(SSHD),并且必须侦听连接使用的端口。 SSH 的默认端口为 22。

参数属性

类型:Int32
默认值:None
支持通配符:False
不显示:False

参数集

ComputerName
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
SSHHost
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-RunAsAdministrator

指示 PSSession 以管理员身份运行。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

ContainerId
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Session

指定要用于交互式会话的 PowerShell 会话(PSSession)。 此参数采用会话对象。 还可以使用 名称InstanceIDID 参数来指定 PSSession

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

使用 Exit-PSSessionEXIT 关键字时,交互式会话将结束,但创建的 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

-SSHTransport

指示使用安全外壳(SSH)建立远程连接。

默认情况下,PowerShell 使用 Windows WinRM 连接到远程计算机。 此开关强制 PowerShell 使用 HostName 参数集建立基于 SSH 的远程连接。

此参数是在 PowerShell 6.0 中引入的。

参数属性

类型:SwitchParameter
默认值:False
接受的值:true
支持通配符:False
不显示:False

参数集

SSHHost
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Subsystem

指定用于新 PSSession的 SSH 子系统。

这指定在目标上使用的子系统,如sshd_config中定义。 子系统使用预定义的参数启动特定版本的 PowerShell。 如果远程计算机上不存在指定的子系统,该命令将失败。

如果未使用此参数,则默认值为“powershell”子系统。

参数属性

类型:String
默认值:Powershell
支持通配符:False
不显示:False

参数集

SSHHost
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-UserName

指定用于在远程计算机上创建会话的帐户的用户名。 用户身份验证方法将取决于在远程计算机上配置安全外壳 (SSH) 的方式。

如果将 SSH 配置为基本密码身份验证,则系统将提示您输入用户密码。

如果将 SSH 配置为基于密钥的用户身份验证,则可以通过 KeyFilePath 参数提供密钥文件路径,并且不会出现密码提示。 请注意,如果客户端用户密钥文件位于 SSH 已知位置,则基于密钥的身份验证不需要 KeyFilePath 参数,并且用户身份验证将根据用户名自动进行。 有关详细信息,请参阅有关基于密钥的用户身份验证的 SSH 文档。

这不是必需的参数。 如果未指定 UserName 参数,则当前登录用户名将用于连接。

此参数是在 PowerShell 6.0 中引入的。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

SSHHost
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-UseSSL

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

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

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

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

ComputerName
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-VMId

指定虚拟机的 ID。

参数属性

类型:Guid
默认值:None
支持通配符:False
不显示:False
别名:VMGuid

参数集

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

输入

String

可以将计算机名称作为字符串传递给此 cmdlet。

PSSession

可以将会话对象通过管道传递给此 cmdlet。

输出

None

此 cmdlet 不返回任何输出。

备注

PowerShell 包含以下与 Enter-PSSession相关的别名:

  • 所有平台:
    • etsn

若要连接到远程计算机,你必须是远程计算机上的 Administrators 组的成员。 若要在本地计算机上启动交互式会话,必须使用 以管理员身份运行 选项启动 PowerShell。

使用 Enter-PSSession时,远程计算机上的用户配置文件将用于交互式会话。 远程用户配置文件中的命令,包括用于添加 PowerShell 模块和更改命令提示符的命令,在显示远程提示之前运行。

Enter-PSSession 在本地计算机上将 UI 区域性设置用于交互式会话。 若要查找本地 UI 区域性,请使用 $UICulture 自动变量。

Enter-PSSession 需要 Get-CommandOut-DefaultExit-PSSession cmdlet。 如果这些 cmdlet 未包含在远程计算机上的会话配置中,则命令 Enter-PSSession 将失败。

Invoke-Command不同,该命令在将命令发送到远程计算机之前对其进行分析和解释,Enter-PSSession 直接将命令发送到远程计算机,而无需解释。

如果要输入的会话正忙于处理命令,则 PowerShell 响应 Enter-PSSession 命令之前可能会有延迟。 会话可用后,即已连接。 若要取消 Enter-PSSession 命令,请按 ctrl +

从 PowerShell 6.0 开始,包含 HostName 参数集。 添加了它以基于安全外壳(SSH)提供 PowerShell 远程处理。 多个平台(Windows、Linux、macOS)和 PowerShell 远程处理都支持 SSH 和 PowerShell 远程处理,这些平台安装了并配置了 PowerShell 和 SSH。 这与以前基于 WinRM 的仅 Windows 远程处理不同,并且许多 WinRM 特定功能和限制不适用。 例如,目前不支持基于 WinRM 的配额、会话选项、自定义终结点配置和断开连接/重新连接功能。 有关如何设置 PowerShell SSH 远程处理的详细信息,请参阅 PowerShell 远程处理 Over SSH

在 PowerShell 7.1 之前,通过 SSH 进行远程处理不支持第二跃点远程会话。 此功能仅限于使用 WinRM 的会话。 PowerShell 7.1 允许 Enter-PSSessionEnter-PSHostProcess 在任何交互式远程会话中工作。

ssh 可执行文件按以下顺序从以下源获取配置数据:

  1. 命令行选项
  2. 用户的配置文件 (~/.ssh/config)
  3. 系统范围的配置文件(/etc/ssh/ssh_config)

以下 cmdlet 参数映射到 ssh 参数和选项:

Cmdlet 参数 ssh 参数 等效 ssh -o 选项
-KeyFilePath -i <KeyFilePath> -o IdentityFile=<KeyFilePath>
-UserName -l <UserName> -o User=<UserName>
-Port -p <Port> -o Port=<Port>
-ComputerName -Subsystem -s <ComputerName> <Subsystem> -o Host=<ComputerName>

参数显式传递的任何值都优先于 选项 哈希表中传递的值。 有关 ssh_config 文件的详细信息,请参阅 ssh_config(5)