New-PSSession

创建与本地或远程计算机的持久连接。

语法

New-PSSession
   [[-ComputerName] <String[]>]
   [-Credential <PSCredential>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-ConfigurationName <String>]
   [-Port <Int32>]
   [-UseSSL]
   [-ApplicationName <String>]
   [-ThrottleLimit <Int32>]
   [-SessionOption <PSSessionOption>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [<CommonParameters>]
New-PSSession
   [-Credential <PSCredential>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-ConfigurationName <String>]
   [-ThrottleLimit <Int32>]
   [-ConnectionUri] <Uri[]>
   [-AllowRedirection]
   [-SessionOption <PSSessionOption>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [<CommonParameters>]
New-PSSession
   -Credential <PSCredential>
   [-Name <String[]>]
   [-ConfigurationName <String>]
   [-VMId] <Guid[]>
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]
New-PSSession
   -Credential <PSCredential>
   [-Name <String[]>]
   [-ConfigurationName <String>]
   -VMName <String[]>
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]
New-PSSession
   [[-Session] <PSSession[]>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]
New-PSSession
   [-Name <String[]>]
   [-ConfigurationName <String>]
   -ContainerId <String[]>
   [-RunAsAdministrator]
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]
New-PSSession
   [-Name <String[]>]
   [-UseWindowsPowerShell]
   [<CommonParameters>]
New-PSSession
   [-Name <String[]>]
   [-Port <Int32>]
   [-HostName] <String[]>
   [-UserName <String>]
   [-KeyFilePath <String>]
   [-Subsystem <String>]
   [-ConnectingTimeout <Int32>]
   [-SSHTransport]
   [-Options <Hashtable>]
   [<CommonParameters>]
New-PSSession
   [-Name <String[]>]
   -SSHConnection <Hashtable[]>
   [<CommonParameters>]

说明

New-PSSession cmdlet 在本地或远程计算机上创建 PowerShell 会话(PSSession)。 创建 PSSession时,PowerShell 将建立与远程计算机的持久连接。

使用 PSSession 运行多个共享数据的命令,例如函数或变量的值。 若要在 PSSession中运行命令,请使用 Invoke-Command cmdlet。 若要使用 PSSession 直接与远程计算机交互,请使用 Enter-PSSession cmdlet。 有关详细信息,请参阅 about_PSSessions

可以在远程计算机上运行命令,而无需使用 Enter-PSSessionInvoke-CommandComputerName 参数创建 PSSession。 使用 ComputerName 参数时,PowerShell 将创建用于命令的临时连接,然后关闭。

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

注意

在将 WSMan 远程处理从 Linux 或 macOS 客户端与不受信任的服务器证书的 HTTPS 终结点(例如自签名证书)配合使用时。 必须提供 PSSessionOption,其中包括 SkipCACheckSkipCNCheck 值设置为 $true 才能成功建立连接。 仅当处于可以确定服务器证书和与目标系统的网络连接的环境中时,才执行此作。

示例

示例 1:在本地计算机上创建会话

$s = New-PSSession

此命令在本地计算机上创建新的 PSSession,并将 PSSession 保存在 $s 变量中。

现在可以使用此 PSSession 在本地计算机上运行命令。

示例 2:在远程计算机上创建会话

$Server01 = New-PSSession -ComputerName Server01

此命令在 Server01 计算机上创建新的 PSSession,并将其保存在 $Server01 变量中。

创建多个 PSSession 对象时,请将其分配给具有有用名称的变量。 这有助于在后续命令中管理 PSSession 对象。

示例 3:在多台计算机上创建会话

$s1, $s2, $s3 = New-PSSession -ComputerName Server01, Server02, Server03

此命令创建三个 PSSession 对象,每个计算机上都由 ComputerName 参数指定。

该命令使用赋值运算符(=)将新的 PSSession 对象分配给变量:$s1$s2$s3。 它将 Server01 PSSession 分配给 $s1、Server02 PSSession$s2,Server03 PSSession 分配给 $s3

向一系列变量分配多个对象时,PowerShell 将每个对象分别分配给序列中的变量。 如果对象多于变量,则所有剩余对象都分配给最后一个变量。 如果变量多于对象,其余变量为空($null)。

示例 4:创建具有指定端口的会话

New-PSSession -ComputerName Server01 -Port 8081 -UseSSL -ConfigurationName E12

此命令在 Server01 计算机上创建新的 PSSession,该计算机连接到服务器端口 8081 并使用 SSL 协议。 新的 PSSession 使用名为 E12的备用会话配置。

在设置端口之前,必须在远程计算机上配置 WinRM 侦听器以侦听端口 8081。 有关详细信息,请参阅 端口 参数的说明。

示例 5:基于现有会话创建会话

New-PSSession -Session $s -Credential Domain01\User01

此命令创建一个 PSSession,其属性与现有 PSSession相同。 当现有 PSSession 的资源耗尽并且需要新的 PSSession 来卸载某些需求时,可以使用此命令格式。

该命令使用 New-PSSessionSession 参数来指定保存在 $s 变量中的 PSSession。 它使用 Domain1\Admin01 用户的凭据来完成命令。

示例 6:在不同的域中创建具有全局范围的会话

$global:s = New-PSSession -ComputerName Server1.Domain44.Corpnet.Fabrikam.com -Credential Domain01\Admin01

此示例演示如何创建具有不同域中计算机全局范围的 PSSession

默认情况下,命令行中创建的 PSSession 对象具有本地作用域,在脚本中创建的 PSSession 对象具有脚本范围。

若要创建具有全局范围的 PSSession,请创建新的 PSSession,然后将 PSSession 存储在强制转换为全局范围的变量中。 在这种情况下,$s 变量将强制转换为全局范围。

该命令使用 ComputerName 参数指定远程计算机。 由于计算机与用户帐户位于不同的域中,因此该计算机的全名与用户的凭据一起指定。

示例 7:为许多计算机创建会话

$rs = Get-Content C:\Test\Servers.txt | New-PSSession -ThrottleLimit 50

此命令在 Servers.txt 文件中列出的 200 台计算机上创建 PSSession,并将生成的 PSSession 存储在 $rs 变量中。 PSSession 对象限制为 50

当计算机的名称存储在数据库、电子表格、文本文件或其他可转换文本格式中时,可以使用此命令格式。

示例 8:使用 URI 创建会话

$s = New-PSSession -URI http://Server01:91/NewSession -Credential Domain01\User01

此命令在 Server01 计算机上创建 PSSession,并将其存储在 $s 变量中。 它使用 URI 参数来指定传输协议、远程计算机、端口和备用会话配置。 它还使用 Credential 参数指定有权在远程计算机上创建会话的用户帐户。

示例 9:在一组会话中运行后台作业

$s = New-PSSession -ComputerName (Get-Content Servers.txt) -Credential Domain01\Admin01 -ThrottleLimit 16
Invoke-Command -Session $s -ScriptBlock {Get-Process PowerShell} -AsJob

这些命令创建一组 PSSession 对象,然后在每个 PSSession 对象中运行后台作业。

第一个命令在 Servers.txt 文件中列出的每台计算机上创建新的 PSSession。 它使用 New-PSSession cmdlet 创建 PSSessionComputerName 参数的值是一个命令,它使用 Get-Content cmdlet 获取 Servers.txt 文件的计算机名称列表。

该命令使用 Credential 参数创建具有域管理员权限的 PSSession 对象,并使用 ThrottleLimit 参数将命令限制为 16 并发连接。 该命令将 PSSession 对象保存在 $s 变量中。

第二个命令使用 Invoke-Command cmdlet 的 AsJob 参数启动后台作业,该作业在 $s中的每个 PSSession 对象中运行 Get-Process PowerShell 命令。

有关 PowerShell 后台作业的详细信息,请参阅 about_Jobsabout_Remote_Jobs

示例 10:使用计算机 URI 为计算机创建会话

New-PSSession -ConnectionURI https://management.exchangelabs.com/Management

此命令创建一个 PSSession 对象,这些对象连接到由 URI 而不是计算机名称指定的计算机。

示例 11:创建会话选项

$so = New-PSSessionOption -SkipCACheck
New-PSSession -ConnectionUri https://management.exchangelabs.com/Management -SessionOption $so -Credential Server01\Admin01

此示例演示如何创建会话选项对象并使用 SessionOption 参数。

第一个命令使用 New-PSSessionOption cmdlet 创建会话选项。 它将生成的 SessionOption 对象保存在 $so 变量中。

第二个命令使用新会话中的选项。 该命令使用 New-PSSession cmdlet 创建新会话。 SessionOption 参数的值是 $so 变量中的 SessionOption 对象。

示例 12:使用 SSH 创建会话

New-PSSession -HostName UserA@LinuxServer01

此示例演示如何使用安全外壳(SSH)创建新的 PSSession。 如果在远程计算机上配置 SSH 以提示输入密码,则会收到密码提示。 否则,必须使用基于 SSH 密钥的用户身份验证。

示例 13:使用 SSH 创建会话并指定端口和用户身份验证密钥

New-PSSession -HostName UserA@LinuxServer01:22 -KeyFilePath c:\<path>\userAKey_rsa

此示例演示如何使用安全外壳(SSH)创建 PSSession。 它使用 端口 参数来指定要使用的端口,并使用 KeyFilePath 参数来指定用于标识和验证远程计算机上的用户的 RSA 密钥。

示例 14:使用 SSH 创建多个会话

$sshConnections = @(
    @{
          HostName    = 'WinServer1'
          UserName    = 'domain\userA'
          KeyFilePath = 'c:\users\UserA\id_rsa'
    }
    @{
        HostName    = 'UserB@LinuxServer5'
        KeyFilePath = 'c:\UserB\<path>\id_rsa'
    }
)
New-PSSession -SSHConnection $sshConnections

此示例演示如何使用安全外壳 (SSH) 和 SSHConnection 参数集创建多个会话。 SSHConnection 参数采用包含每个会话的连接信息的哈希表数组。 请注意,此示例要求目标远程计算机配置 SSH 以支持基于密钥的用户身份验证。

示例 15:使用 SSH 选项创建新会话

$options = @{
    Port=22
    User = 'UserB'
    Host = 'LinuxServer5'
}
New-PSSession -KeyFilePath '/Users/UserB/id_rsa' -Options $options

此示例演示如何使用 SSH 选项为基于 Linux 的远程计算机创建新的基于 SSH 的会话。 Options 参数采用作为选项传递给基础 ssh 命令的值的哈希表,这些值与远程系统建立的连接。

参数

-AllowRedirection

指示此 cmdlet 允许将此连接重定向到备用统一资源标识符(URI)。

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

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

类型:SwitchParameter
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-ApplicationName

指定连接 URI 的应用程序名称段。 如果不在命令中使用 ConnectionURI 参数,请使用此参数指定应用程序名称。

默认值是本地计算机上的 $PSSessionApplicationName 首选项变量的值。 如果未定义此首选项变量,则默认值 WSMAN。 此值适用于大多数用途。 有关详细信息,请参阅 about_Preference_Variables

WinRM 服务使用应用程序名称来选择侦听器来为连接请求提供服务。 此参数的值应与远程计算机上的侦听器的 URLPrefix 属性的值匹配。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-Authentication

指定用于对用户凭据进行身份验证的机制。 此参数的可接受值为:

  • Default
  • Basic
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

默认值为 Default

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

谨慎

凭据安全支持提供程序(CredSSP)身份验证(其中用户凭据传递到要进行身份验证的远程计算机)旨在用于需要对多个资源进行身份验证的命令,例如访问远程网络共享。 此机制会增加远程作的安全风险。 如果远程计算机遭到入侵,则传递给它的凭据可用于控制网络会话。

类型:AuthenticationMechanism
接受的值:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-CertificateThumbprint

指定有权执行此作的用户帐户的数字公钥证书(X509)。 输入证书的证书指纹。

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

若要获取证书,请使用 PowerShell Cert: 驱动器中的 Get-ItemGet-ChildItem 命令。

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-ComputerName

指定计算机名称数组。 此 cmdlet 创建到指定计算机的持久性连接(PSSession)。 如果输入多个计算机名称,New-PSSession 为每个计算机创建多个 PSSession 对象。 默认值为本地计算机。

键入 NetBIOS 名称、IP 地址或一个或多个远程计算机的完全限定域名。 若要指定本地计算机,请键入计算机名称、localhost或点(.)。 当计算机位于与用户不同的域中时,需要完全限定的域名。 还可以通过管道将计算机名称(用引号)New-PSSession

若要在 ComputerName 参数的值中使用 IP 地址,该命令必须包含 Credential 参数。 此外,必须为计算机配置 HTTPS 传输,或者远程计算机的 IP 地址必须包含在本地计算机上的 WinRM TrustedHosts 列表中。 有关将计算机名称添加到 TrustedHosts 列表的说明,请参阅 about_Remote_Troubleshooting中的“如何将计算机添加到受信任的主机列表”。

若要将本地计算机包含在 ComputerName 参数的值中,请使用 “以管理员身份运行”选项启动 Windows PowerShell。

类型:String[]
别名:Cn
Position:0
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-ConfigurationName

指定用于新 PSSession的会话配置。

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

会话的会话配置位于远程计算机上。 如果远程计算机上不存在指定的会话配置,命令将失败。

默认值是本地计算机上的 $PSSessionConfigurationName 首选项变量的值。 如果未设置此首选项变量,则默认值为 Microsoft.PowerShell。 有关详细信息,请参阅 about_Preference_Variables

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-ConnectingTimeout

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

此参数是在 PowerShell 7.2 中引入的

类型:Int32
Position:Named
默认值:unlimited
必需: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[]
别名:URI, CU
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-ContainerId

指定容器 ID 数组。 此 cmdlet 启动与每个指定容器的交互式会话。 使用 docker ps 命令获取容器 ID 的列表。 有关详细信息,请参阅 docker ps 命令的帮助。

类型:String[]
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-Credential

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

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

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

注意

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

类型:PSCredential
Position:Named
默认值:Current user
必需:False
接受管道输入:True
接受通配符:False

-EnableNetworkAccess

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

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

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

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

还可以使用 身份验证 参数 CredSSP 值(将会话凭据委托给其他计算机)在环回会话中启用远程访问。

为了防止计算机受到恶意访问,具有交互式令牌的断开连接环回会话(即使用 EnableNetworkAccess 参数创建的会话)只能从创建会话的计算机重新连接。 可以使用 CredSSP 身份验证的断开连接会话可以从其他计算机重新连接。 有关详细信息,请参阅 Disconnect-PSSession

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

类型:SwitchParameter
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-HostName

为基于安全外壳(SSH)的连接指定计算机名称数组。 这类似于 ComputerName 参数,但与远程计算机的连接是使用 SSH 而不是 Windows WinRM 进行的。

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

类型:String[]
Position:0
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-KeyFilePath

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

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

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

类型:String
别名:IdentityFilePath
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Name

指定 PSSession的友好名称。

使用其他 cmdlet(如 Get-PSSessionEnter-PSSession)时,可以使用名称来引用 PSSession。 该名称不需要对计算机或当前会话是唯一的。

类型:String[]
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Options

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

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

类型:Hashtable
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符: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
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-RunAsAdministrator

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

类型:SwitchParameter
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-Session

指定此 cmdlet 用作新 PSSession模型 PSSession 对象的数组。 此参数创建与指定 PSSession 对象具有相同属性的新 PSSession 对象。

输入一个变量,其中包含 PSSession 对象或创建或获取 PSSession 对象的命令,例如 New-PSSessionGet-PSSession 命令。

生成的 PSSession 对象具有相同的计算机名称、应用程序名称、连接 URI、端口、配置名称、限制和安全套接字层 (SSL) 值,但它们具有不同的显示名称、ID 和实例 ID(GUID)。

类型:PSSession[]
Position:0
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-SessionOption

指定会话的高级选项。 输入 SessionOption 对象,例如使用 New-PSSessionOption cmdlet 创建的会话选项,或键是会话选项名称的哈希表,值是会话选项值。

选项的默认值由 $PSSessionOption 首选项变量的值(如果已设置)确定。 否则,默认值由会话配置中设置的选项建立。

会话选项值优先于在 $PSSessionOption 首选项变量和会话配置中设置的会话的默认值。 但是,它们不优先于会话配置中设置的最大值、配额或限制。

有关包含默认值的会话选项的说明,请参阅 New-PSSessionOption。 有关 $PSSessionOption 首选项变量的信息,请参阅 about_Preference_Variables。 有关会话配置的详细信息,请参阅 about_Session_Configurations

类型:PSSessionOption
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-SSHConnection

此参数采用哈希表数组,其中每个哈希表包含建立安全外壳(SSH)连接所需的一个或多个连接参数(HostNamePortUserNameKeyFilePath)。

哈希表连接参数与为 SSHHost 参数集定义的参数相同。

SSHConnection 参数可用于创建多个会话,其中每个会话需要不同的连接信息。

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

类型:Hashtable[]
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-SSHTransport

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

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

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

类型:SwitchParameter
接受的值:true
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-Subsystem

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

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

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

类型:String
Position:Named
默认值:powershell
必需:False
接受管道输入:True
接受通配符:False

-ThrottleLimit

指定可建立以运行此命令的最大并发连接数。 如果省略此参数或输入值 0 (零),则使用默认值 32

限制限制仅适用于当前命令,不适用于会话或计算机。

类型:Int32
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-UserName

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

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

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

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

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

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-UseSSL

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

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

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

类型:SwitchParameter
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-UseWindowsPowerShell

在本地系统上创建与新 Windows PowerShell 运行空间的远程连接。

类型:SwitchParameter
Position:Named
默认值:False
必需:True
接受管道输入:False
接受通配符:False

-VMId

指定虚拟机 ID 的数组。 此 cmdlet 启动与每个指定虚拟机的 PowerShell Direct 交互式会话。 有关详细信息,请参阅使用 PowerShell 虚拟机自动化和管理。

使用 Get-VM 查看 Hyper-V 主机上可用的虚拟机。

类型:Guid[]
别名:VMGuid
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-VMName

指定虚拟机的名称数组。 此 cmdlet 启动与每个指定虚拟机的 PowerShell Direct 交互式会话。 有关详细信息,请参阅使用 PowerShell 虚拟机自动化和管理。

使用 Get-VM 查看 Hyper-V 主机上可用的虚拟机。

类型:String[]
Position:Named
默认值:None
必需:True
接受管道输入:True
接受通配符:False

输入

String

可以通过管道将字符串传递给此 cmdlet。

System.URI

可以通过管道将 URI 传递给此 cmdlet。

PSSession

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

输出

PSSession

备注

PowerShell 包含以下 New-PSSession别名:

  • 所有平台:

    • nsn
  • 此 cmdlet 使用 PowerShell 远程处理基础结构。 若要使用此 cmdlet,必须为本地计算机和任何远程计算机配置 PowerShell 远程处理。 有关详细信息,请参阅 about_Remote_Requirements

  • 若要在本地计算机上创建 PSSession,请使用 以管理员 选项启动 PowerShell。

  • 完成 PSSession后,请使用 Remove-PSSession cmdlet 删除 PSSession 并释放其资源。

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

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)