建立与本地或远程计算机的持续性连接。

语法

New-PSSession [[-ComputerName] <string[]>] [-ApplicationName <string>] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-CertificateThumbprint <string>] [-ConfigurationName <string>] [-Credential <PSCredential>] [-Name <string[]>] [-Port <int>] [-SessionOption <PSSessionOption>] [-UseSSL] [-ThrottleLimit <int>] [<CommonParameters>]

New-PSSession [[-Session] <PSSession[]>] [-Name <string[]>] [-ThrottleLimit <int>] [<CommonParameters>]

New-PSSession [-ConnectionURI] <Uri[]> [-AllowRedirection] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-CertificateThumbprint <string>] [-ConfigurationName <string>] [-Credential <PSCredential>] [-Name <string[]>] [-SessionOption <PSSessionOption>] [-ThrottleLimit <int>] [<CommonParameters>]

说明

New-PSSession cmdlet 在本地或远程计算机上创建一个 Windows PowerShell 会话 (PSSession)。通过创建 PSSession,Windows PowerShell 可以建立与远程计算机的持续性连接。

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

通过使用 Enter-PSSessionInvoke-Command 的 ComputerName 参数,您无需创建 PSSession 便可以在远程计算机上运行命令。使用 ComputerName 参数时,Windows PowerShell 会创建一个临时连接,此连接仅用于交互式会话或单个命令,之后将关闭。

参数

-AllowRedirection

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

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

也可以通过设置 $PSSessionOption 首选项变量的 MaximumConnectionRedirectionCount 属性或 SessionOption 参数值的 MaximumConnectionRedirectionCount 属性来限制重定向连接的次数。

默认值为 5。有关详细信息,请参阅 SessionOption 参数的说明以及 New-PSSessionOption。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

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

默认值

Default

是否接受管道输入?

false

是否接受通配符?

false

-CertificateThumbprint <string>

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

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

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

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-ComputerName <string[]>

建立与指定计算机的持续性连接 (PSSession)。如果输入多个计算机名称,New-PSSession 将创建多个 PSSession,每台计算机一个。默认值为本地计算机。

键入一台或多台远程计算机的 NetBIOS 名称、IP 地址或完全限定的域名。要指定本地计算机,请键入计算机名称、“localhost”或句点 (.)。当计算机与用户处于不同的域中时,必须使用完全限定的域名。也可将计算机名称(用引号括起)通过管道传送给 New-PSSession。

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

注意:在 Windows Vista 以及更高版本的 Windows 中,要在 ComputerName 参数的值中包含本地计算机,必须使用“以管理员身份运行”选项启动 Windows PowerShell。

是否为必需?

false

位置?

1

默认值

是否接受管道输入?

true (ByValue, ByPropertyName)

是否接受通配符?

false

-ConfigurationName <string>

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

输入会话配置的配置名称或完全限定的资源“统一资源标识符”(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 参数。

是否为必需?

true

位置?

1

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

false

-Credential <PSCredential>

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

键入用户名,如“User01”、“Domain01\User01”或“User@Domain.com”,或输入 PSCredential 对象,如 Get-Credential cmdlet 返回的一个 PSCredential 对象。

键入用户名时,将会提示您键入密码。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

false

-Name <string[]>

为 PSSession 指定一个友好名称。

使用其他 cmdlet(例如 Get-PSSession 和 Enter-PSSession)时,可以使用该名称来引用 PSSession。该名称对于计算机或当前会话来说不必是唯一的。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

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=&quot;&lt;port-number&gt;&quot;}

除非确有必要,否则不要使用 Port 参数。命令中的端口设置应用于运行此命令的所有计算机和会话。备用端口设置可能使该命令无法在所有计算机上运行。

是否为必需?

false

位置?

named

默认值

80

是否接受管道输入?

false

是否接受通配符?

false

-Session <PSSession[]>

使用指定的 PSSession 作为新 PSSession 的模型。此参数创建一个与指定的 PSSession 具有相同属性的新 PSSession。

输入包含 PSSessions 的变量或者用来创建或获取 PSSessions 的命令,如 New-PSSession 或 Get-PSSession 命令。

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

是否为必需?

false

位置?

1

默认值

是否接受管道输入?

true (ByValue, ByPropertyName)

是否接受通配符?

false

-SessionOption <PSSessionOption>

为会话设置高级选项。输入使用 New-PSSessionOption cmdlet 创建的 SessionOption 对象。

这些选项的默认值由 $PSSessionOption 首选项变量的值(如果设置了该变量)确定。否则,会话使用系统默认值。

有关会话选项(包括默认值)的说明,请参阅 New-PSSessionOption。有关 $PSSessionOption 首选项变量的信息,请参阅 about_Preference_Variables。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-ThrottleLimit <int>

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

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

是否为必需?

false

位置?

named

默认值

32

是否接受管道输入?

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, System.URI, System.Management.Automation.Runspaces.PSSession

您可以通过管道将 ComputerName(字符串)、ConnectionURI (URI) 或 Session (PSSession) 对象传递给 New-PSSession。

输出

System.Management.Automation.Runspaces.PSSession

说明

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

在 Windows Vista 以及更高版本的 Windows 中,要在本地计算机上创建 PSSession,必须使用“以管理员身份运行”选项启动 Windows PowerShell。

创建 PSSession 完毕后,使用 Remove-PSSession cmdlet 可删除 PSSession 并释放它占用的资源。

示例 1

C:\PS>$s = new-pssession

说明
-----------
此命令在本地计算机上创建一个新 PSSession 并将它保存在 $s 变量中。

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






示例 2

C:\PS>$Server01 = new-pssession -ComputerName Server01

说明
-----------
此命令在计算机 Server01 上创建一个新 PSSession 并将它保存在 $Server01 变量中。

如果创建了多个 PSSession,请将它们赋给具有有效名称的变量。这将有助于在随后的命令中管理 PSSession。






示例 3

C:\PS>$s1, $s2, $s3 = new-session -computername server1,server2,server3

说明
-----------
此命令在 ComputerName 参数指定的每台计算机上创建一个新的 PSSession(共三个)。

它使用赋值运算符 (=) 将新的 PSSession 赋给变量数组:$s1, $s2, $s3。它将 Server01 PSSession 赋给 $s1,将 Server02 PSSession 赋给 $s2,将 Server03 PSSession 赋给 $s3。

将多个对象赋予一个变量数组时,Windows PowerShell 会将每个对象分别赋给数组中的一个变量。如果对象多于变量,则所有剩余的对象都赋给最后一个变量。如果变量多于对象,则剩余的变量为空 (Null)。






示例 4

C:\PS>new-pssession -computername Server01 -port 8081 -useSSL -ConfigurationName E12

说明
-----------
此命令在计算机 Server01 上创建一个连接到服务器端口 8081 并使用 SSL 协议的新 PSSession。这个新的 PSSession 使用名为“E12”的替代会话配置。

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






示例 5

C:\PS>new-pssession -session $s -credential domain01\user01

说明
-----------
此命令创建一个与某个现有 PSSession 具有相同属性的新 PSSession。当现有 PSSession 的资源耗尽并且需要新的 PSSession 来分担某些需求时,可以使用该命令格式。

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






示例 6

C:\PS>$global:s = new-pssession -computername server1.domain44.corpnet.fabrikam.com -credential domain01\admin01

说明
-----------
此示例说明如何创建一个在位于不同域中的计算机上具有全局作用域的 PSSession。

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

若要创建具有全局作用域的 PSSession,请创建一个新 PSSession,然后将其存储在一个强制转换为全局作用域的变量中。在本例中,$s 变量强制转换为全局作用域。

此命令使用 ComputerName 参数来指定远程计算机。由于计算机与用户帐户处于不同的域中,因此必须指定计算机的全名以及用户的凭据。






示例 7

C:\PS>$rs = get-content c:\test\servers.txt | new-PSsession -throttleLimit 50

说明
-----------
此命令在 Servers.txt 文件中列出的每台计算机(共 200 台)上创建一个 PSSession,并将生成的 PSSession 存储在 $rs 变量中。该 PSSession 的节流限制为 50。

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






示例 8

C:\PS>$s = new-PSSession -URI http://Server01:91/NewSession -credential domain01\user01

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






示例 9

C:\PS>$s = new-PSSession -computername (import-csv servers.csv) -credential domain01\admin01 -throttlelimit 16

C:\PS> invoke-command -session $s -scriptblock {get-process powershell} -AsJob

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

第一个命令在 Servers.csv 文件中列出的每台计算机上创建一个新的 PSSession。它使用 New-PSSession cmdlet 来创建 PSSession。ComputerName 参数的值是一个使用 Import-Csv cmdlet 来导入 Servers.csv 文件并读取其内容的命令。

该命令使用 Credential 参数创建具有域管理员权限的 PSSession,并使用 ThrottleLimit 参数将命令限制在 16 个并发连接。该命令将 PSSession 保存在 $s 变量中。
   
第二个命令使用 Invoke-Command 的 AsJob 参数启动一个后台作业,此作业在 $s 中的每个 PSSession 中运行一个“Get-Process PowerShell”命令。

有关后台作业的详细信息,请参阅 about_Jobs and about_Remote_Jobs。






示例 10

C:\PS>new-PSSession -ConnectionURI https://management.exchangelabs.com/Management

说明
-----------
此命令创建一个新的 PSSession,该 PSSession 连接到由 URI 而不是计算机名指定的计算机。






示例 11

C:\PS>$so = New-WSManSessionOption -SkipCACheck

PS C:\> new-pssession -ConnectionUri https://management.exchangelabs.com/Management -SessionOption $so -credential server01\admin01

说明
-----------
此示例说明如何创建和使用 SessionOption 参数。

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

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






另请参阅




目录