PS> Enter-PSSession -ComputerName Server01
[Server01]: PS> Exit-PSSession
此示例显示了如何启动和停止交互式会话。 第一个命令使用 Enter-PSSession
cmdlet 启动与 Server01 计算机的交互式会话。
第二个 Exit-PSSession
命令使用 cmdlet 结束会话。 还可以使用 Exit 关键字结束交互式会话。 Exit-PSSession
和 Exit 具有相同的效果。
示例 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
MaximumRedirection 参数或设置首选项变量的 $PSSessionOption
MaximumConnectionRedirectionCount 属性。 默认值为 5。
Type:SwitchParameter
Position:Named
Default value: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
Accept pipeline input:True
Accept wildcard characters:False
-Authentication
指定用于对用户的凭据进行身份验证的机制。 此参数的可接受值为:
Credssp
Kerberos
Negotiate
NegotiateWithImplicitCredential
默认值为 Default。
CredSSP 身份验证仅在 Windows Vista、Windows Server 2008 和更高版本的 Windows 操作系统中可用。
有关此参数的值的详细信息,请参阅 AuthenticationMechanism 枚举。
在凭据安全支持提供程序 (CredSSP) 身份验证中,用户凭据传递到远程计算机中以进行验证,这种验证用于要求对多个资源(例如访问远程网络共享)进行验证的命令。 此机制增加了远程操作的安全风险。 如果远程计算机的安全受到威胁,则传递给该计算机的凭据可用于控制网络会话。
Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-CertificateThumbprint
指定有权执行此操作的用户帐户的数字公钥证书 (X509)。 输入证书的证书指纹。
在基于客户端证书的身份验证中使用证书。 证书只能映射到本地用户帐户,而不适用于域帐户。
若要获取证书,请在 Get-Item
PowerShell 证书: 驱动器中使用 或 Get-ChildItem
命令。
Type:String
Position:Named
Default value:None
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 操作系统上,若要在 ComputerName 参数的值中包含本地计算机,必须使用“以管理员身份运行”选项启动 PowerShell。
指定用于交互式会话的会话配置。
输入会话配置的配置名称或完全限定的资源 URI。 如果仅指定配置名称,则会在前面添加以下架构 URI: http://schemas.microsoft.com/powershell
。
与 SSH 一起使用时,这将指定sshd_config中定义的目标上使用的子系统。 SSH 的默认值为 powershell
子系统。
会话的会话配置位于远程计算机上。 如果远程计算机上不存在指定的会话配置,则该命令会失败。
默认值是 $PSSessionConfigurationName
本地计算机上首选项变量的值。 如果未设置此首选项变量,则默认值为 Microsoft.PowerShell。 有关详细信息,请参阅 about_Preference_Variables。
Type:String
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-ConnectingTimeout
指定初始 SSH 连接完成所允许的时间(以毫秒为单位)。 如果连接未在指定时间内完成,则返回错误。
此参数是在 PowerShell 7.2 中引入的
Type:Int32
Position:Named
Default value:unlimited
Accept pipeline input:False
Accept wildcard characters:False
-ConnectionUri
指定定义会话的连接终结点的 URI。 URI 必须完全限定。 此字符串的格式如下:
<Transport>://<ComputerName>:<Port>/<ApplicationName>
默认值如下:
http://localhost:5985/WSMAN
如果未指定 ConnectionURI,则可以使用 UseSSL、ComputerName、Port 和 ApplicationName 参数来指定 ConnectionURI 值。
URI 的 Transport 段的有效值为 HTTP 和 HTTPS。 如果使用传输段指定连接 URI,但未指定端口,则使用标准端口创建会话:80 用于 HTTP,443 用于 HTTPS。 若要使用默认端口进行 PowerShell 远程处理,请为 HTTP 指定端口 5985,为 HTTPS 指定端口 5986。
如果目标计算机将连接重定向到其他 URI,PowerShell 会阻止重定向,除非你在命令中使用 AllowRedirection 参数。
Type:Uri
Aliases:URI, CU
Position:1
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-ContainerId
指定容器的 ID。
Type:String
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-Credential
指定有权执行此操作的用户帐户。 默认为当前用户。
键入用户名(如 User01 或 Domain01\User01),或输入 cmdlet Get-Credential
生成的 PSCredential 对象。 如果键入用户名,系统会提示输入密码。
凭据存储在 PSCredential 对象中,密码存储为 SecureString。
有关 SecureString 数据保护的详细信息,请参阅 SecureString 的安全性如何?。
-EnableNetworkAccess
指示此 cmdlet 将交互式安全令牌添加到环回会话。 通过交互式令牌,你可以在环回会话中运行用于获取其他计算机中的数据的命令。 例如,你可以在该会话中运行用于将 XML 文件从远程计算机复制到本地计算机的命令。
环回会话是在同一计算机上开始并终止的 PSSession。 若要创建环回会话,请省略 ComputerName 参数或将其值设置为 。 (点) 、localhost 或本地计算机的名称。
默认情况下,环回会话是使用网络令牌创建的,该令牌可能无法提供足够的权限来对远程计算机进行身份验证。
EnableNetworkAccess 参数仅在环回会话中有效。 如果在远程计算机上创建会话时使用 EnableNetworkAccess ,则命令会成功,但参数将被忽略。
通过用于将会话凭据委派给其他计算机的 CredSSP 参数的 Authentication 值,你还可以在环回会话中进行远程访问。
已在 Windows PowerShell 3.0 中引入了此参数。
Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False
-HostName
指定安全外壳 (基于 SSH) 的连接的计算机名称。 这类似于 ComputerName 参数,只不过与远程计算机的连接是使用 SSH 而不是 Windows WinRM 建立的。 此参数支持使用 格式 user@hostname:port
将用户名和/或端口指定为主机名参数值的一部分。 指定为主机名一部分的用户名和/或端口优先于 -UserName
和 -Port
参数(如果指定)。 这允许将多个计算机名称传递给此参数,其中一些具有特定用户名和/或端口,而另一些则使用 和 -Port
参数中的-UserName
用户名和/或端口。
此参数是在 PowerShell 6.0 中引入的。
Type:String
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
指定现有会话的 ID。 Enter-PSSession
使用交互式会话的指定会话。
若要查找会话的 ID,请使用 Get-PSSession
cmdlet。
Type:Int32
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-InstanceId
指定现有会话的实例 ID。 Enter-PSSession
使用交互式会话的指定会话。
实例 ID 是一个 GUID。 若要查找会话的实例 ID,请使用 Get-PSSession
cmdlet。 还可以使用 Session、 Name 或 ID 参数来指定现有会话。 或者,可以使用 ComputerName 参数启动临时会话。
Type:Guid
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-KeyFilePath
指定安全外壳 (SSH) 用于对远程计算机上的用户进行身份验证的密钥文件路径。
SSH 允许通过私钥/公钥执行用户身份验证,作为基本密码身份验证的替代方法。 如果为远程计算机配置了密钥身份验证,则此参数可用于提供用于标识用户的密钥。
此参数是在 PowerShell 6.0 中引入的。
Type:String
Aliases:IdentityFilePath
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Name
指定现有会话的友好名称。 Enter-PSSession
使用交互式会话的指定会话。
如果你指定的名称与多个会话相匹配,则该命令会失败。 还可以使用 Session、 InstanceID 或 ID 参数指定现有会话。 或者,可以使用 ComputerName 参数启动临时会话。
若要为会话建立友好名称,请使用 cmdlet 的 New-PSSession
Name 参数。
Type:String
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-Options
指定连接到基于 SSH 的远程会话时使用的 SSH 选项的哈希表。 可能的选项是基于 Unix 的 ssh 命令版本支持的任何值。
参数显式传递的任何值都优先于 在 Options 哈希表中传递的值。 例如,使用 Port 参数会替代在 Options 哈希表中传递的任何Port
键值对。
Type:Hashtable
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Port
指定远程计算机上用于此命令的网络端口。
在 PowerShell 6.0 中,此参数包含在 HostName 参数集中,该参数集支持安全外壳 (SSH) 连接。
WinRM (ComputerName 参数集)
若要连接到一台远程计算机,则必须在该连接所用的端口上侦听远程计算机。 默认端口为 5985(HTTP 的 WinRM 端口)和 5986(HTTPS 的 WinRM 端口)。
使用备用端口之前,你必须在远程计算机上配置 WinRM 侦听器,才能在该端口上进行侦听。 使用以下命令配置侦听器:
winrm delete winrm/config/listener?Address=*+Transport=HTTP
winrm create winrm/config/listener?Address=*+Transport=HTTP @{Port="\<port-number\>"}
除非必要,否则不要使用 Port 参数。 命令中的端口设置适用于运行该命令的所有计算机或会话。 备用端口设置可能会阻止在所有计算机上运行该命令。
SSH (HostName 参数集)
若要连接到远程计算机,必须为远程计算机配置 SSH 服务 (SSHD) ,并且必须侦听连接使用的端口。 SSH 的默认端口为 22。
Type:Int32
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-RunAsAdministrator
指示 PSSession 以管理员身份运行。
Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False
-Session
指定要用于交互式会话的 PowerShell 会话 (PSSession) 。 此参数获取一个会话对象。 还可以使用 Name、 InstanceID 或 ID 参数来指定 PSSession。
输入一个变量,该变量包含会话对象或用于创建或获取会话对象的命令,例如 New-PSSession
或 Get-PSSession
命令。 还可以通过管道将会话对象传递给 Enter-PSSession
。 使用此参数只能提交一个 PSSession 。 如果输入的变量包含多个 PSSession,则命令将失败。
使用 Exit-PSSession
或 EXIT 关键字时,交互式会话将结束,但创建的 PSSession 将保持打开状态并可供使用。
Type:PSSession
Position:0
Default value:None
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
Accept pipeline input:False
Accept wildcard characters:False
-SSHTransport
指示使用安全外壳 (SSH) 建立远程连接。
默认情况下,PowerShell 使用 Windows WinRM 连接到远程计算机。 此开关强制 PowerShell 使用 HostName 参数集来建立基于 SSH 的远程连接。
此参数是在 PowerShell 6.0 中引入的。
Type:SwitchParameter
Accepted values:true
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False
-Subsystem
指定用于新 PSSession 的 SSH 子系统。
这指定在目标上使用的子系统,如sshd_config中定义。 子系统使用预定义参数启动特定版本的 PowerShell。 如果远程计算机上不存在指定的子系统,则命令将失败。
如果未使用此参数,则默认值为“powershell”子系统。
Type:String
Position:Named
Default value:Powershell
Accept pipeline input:True
Accept wildcard characters:False
-UserName
指定用于在远程计算机上创建会话的帐户的用户名。 用户身份验证方法将取决于安全外壳 (SSH) 在远程计算机上配置的方式。
如果为基本密码身份验证配置了 SSH,则系统会提示你输入用户密码。
如果为基于密钥的用户身份验证配置了 SSH,则可以通过 KeyFilePath 参数提供密钥文件路径,并且不会发生密码提示。 请注意,如果客户端用户密钥文件位于 SSH 已知位置,则基于密钥的身份验证不需要 KeyFilePath 参数,并且用户身份验证将根据用户名自动进行。 有关详细信息,请参阅有关基于密钥的用户身份验证的 SSH 文档。
这不是必需的参数。 如果未指定 UserName 参数,则当前登录用户名用于连接。
此参数是在 PowerShell 6.0 中引入的。
Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-UseSSL
指示此 cmdlet 使用安全套接字层 (SSL) 协议来建立与远程计算机的连接。 默认情况下,不使用 SSL。
WS-Management加密通过网络传输的所有 PowerShell 内容。 UseSSL 参数是一种额外的保护,用于通过 HTTPS 连接而不是 HTTP 连接发送数据。
如果使用此参数,但 SSL 在用于命令的端口上不可用,则命令将失败。
Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False
-VMId
指定虚拟机的 ID。
Type:Guid
Aliases:VMGuid
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-VMName
指定虚拟机的名称。
Type:String
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
String
可以将计算机名称作为字符串传递给此 cmdlet。
PSSession
可以将会话对象通过管道传递给此 cmdlet。
此 cmdlet 不返回任何输出。
PowerShell 包含以下别名 Enter-PSSession
:
所有平台:
若要连接到远程计算机,你必须是该远程计算机上 Administrators 组的成员。 若要在本地计算机上启动交互式会话,必须使用 “以管理员身份运行” 选项启动 PowerShell。
使用 Enter-PSSession
时,远程计算机上的用户配置文件将用于交互式会话。 远程用户配置文件中的命令(包括用于添加 PowerShell 模块和更改命令提示符的命令)在显示远程提示之前运行。
Enter-PSSession
使用本地计算机上的 UI 区域性设置进行交互式会话。 若要查找本地 UI 区域性,请使用 $UICulture
自动变量。
Enter-PSSession
需要 Get-Command
、 Out-Default
和 Exit-PSSession
cmdlet。 如果远程计算机上的会话配置中不包含这些 cmdlet,则 Enter-PSSession
命令将失败。
与 (在将命令发送到远程计算机之前分析和解释命令)不同 Invoke-Command
, Enter-PSSession
将命令直接发送到远程计算机,而无需解释。
如果要进入的会话正忙于处理命令,则 PowerShell 在响应 Enter-PSSession
命令之前可能存在延迟。 会话可用后,即已连接。 若要取消该 Enter-PSSession
命令,请按 Ctrl+C。
从 PowerShell 6.0 开始,包括 HostName 参数集。 添加它以提供基于安全外壳 (SSH) 的 PowerShell 远程处理。 多个平台都支持 SSH 和 PowerShell, (Windows、Linux、macOS) ,PowerShell 远程处理通过安装和配置 PowerShell 和 SSH 的这些平台工作。 这与以前的仅基于 WinRM 的 Windows 远程处理不同,并且许多 WinRM 特定功能和限制不适用。 例如,目前不支持基于 WinRM 的配额、会话选项、自定义终结点配置和断开连接/重新连接功能。 有关如何设置 PowerShell SSH 远程处理的详细信息,请参阅 通过 SSH 进行 PowerShell 远程处理。
在 PowerShell 7.1 之前,通过 SSH 进行远程处理不支持第二个跃点的远程会话。 此功能仅限于使用 WinRM 的会话。 PowerShell 7.1 允许 Enter-PSSession
和 Enter-PSHostProcess
在任何交互式远程会话中工作。
可执行文件 ssh
按以下顺序从以下源获取配置数据:
- 命令行选项
- 用户的配置文件 (~/.ssh/config)
- 系统范围的配置文件 (/etc/ssh/ssh_config)
以下 cmdlet 参数映射到 ssh
参数和选项中:
Cmdlet 参数
ssh 参数
等效的 ssh -o 选项