要在 PowerShell插件和 Windows PowerShell 之间建立连接,您必须将 WinRM 配置为使用支持的通信协议之一。

PowerShell插件支持 Windows Remote Management (WinRM) 2.0 作为管理协议。

下面是受支持的身份验证方法。
身份验证方法 详细信息
基本 需要用户名和密码的非安全身份验证机制。
Kerberos 使用票证验证客户端和服务器身份的安全身份验证协议。
注: PowerShell插件不支持在 WinRM 委派用户凭据且不支持 CredSSP 身份验证方法。

基于 HTTP 的 WinRM

PowerShell插件支持通过 HTTP 协议与 WinRM 主机进行通信。尽管 WinRM 对通信进行身份验证,但数据传输并未加密,并在网络上以纯文本形式发送。如果进行通信的计算机之间配置了 IPSec,您应使用 HTTP 协议。

要使用基本身份验证,必须在服务和客户端 WinRM 配置中将 AllowUnencrypted属性设置为 true。有关 HTTP 配置的示例,请参见将 WinRM 配置为使用 HTTP

基于 HTTPS 的 WinRM

PowerShell插件支持通过 HTTPS 协议与 WinRM 主机进行通信。可以将 HTTPS 协议用作更安全的通信方法。

要使用 HTTPS 协议,必须生成一个用于服务器身份验证的证书,并在 WinRM 主机上安装该证书。有关 HTTPS 配置的示例,请参见将 WinRM 配置为使用 HTTPS

将 WinRM 配置为使用 HTTP

您可以将 WinRM 主机配置为通过 HTTP 协议与 PowerShell插件进行通信。

您必须通过在 WinRM 主机上运行命令来修改 WinRM 配置。您可以将同一台计算机用作 WinRM 服务和 WinRM 客户端。

重要说明: 如果您在将 WinRM 配置为使用 HTTP 时跳过任何步骤,则可能不会添加主机,并且可能会在日志中显示错误消息,例如
Caused by: org.dom4j.DocumentException: Error on line -1 of document : Premature end of file. 
Nested exception: Premature end of file.
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.dom4j.DocumentHelper.parseText(DocumentHelper.java:278)
at com.xebialabs.overthere.cifs.winrm.connector.JdkHttpConnector.sendMessage(JdkHttpConnector.java:117)

过程

  1. 运行以下命令以设置 WinRM 配置的默认值。
    c:\> winrm quickconfig
  2. (可选) 运行以下命令以检查侦听器是否正在运行,并验证默认端口。
    c:\> winrm e winrm/config/listener

    HTTP 的默认端口为 5985,HTTPS 的默认端口为 5986。

  3. 在 WinRM 服务上启用基本身份验证。
    1. 运行以下命令以检查是否允许基本身份验证。
      c:\> winrm get winrm/config/service
    2. 运行以下命令以启用基本身份验证。
      c:\> winrm set winrm/config/service/auth @{Basic="true"}
  4. 运行以下命令以允许在 WinRM 服务上传输未加密数据。
    c:\> winrm set winrm/config/service @{AllowUnencrypted="true"}
  5. 如果 WinRM 服务的通道绑定令牌强化级别设置为 strict,则将其值更改为 relaxed
    c:\> winrm set winrm/config/service/auth @{CbtHardeningLevel="relaxed"}
  6. 在 WinRM 客户端上启用基本身份验证。
    1. 运行以下命令以检查是否允许基本身份验证。
      c:\> winrm get winrm/config/client
    2. 运行以下命令以启用基本身份验证。
      c:\> winrm set winrm/config/client/auth @{Basic="true"}
  7. 运行以下命令以允许在 WinRM 客户端上传输未加密数据。
    c:\> winrm set winrm/config/client @{AllowUnencrypted="true"}
  8. 如果 WinRM 主机是外部域,请运行以下命令以指定受信任的主机。
    c:\> winrm set winrm/config/client @{TrustedHosts="host1, host2, host3"}
  9. 运行以下命令以测试与 WinRM 服务的连接。
    c:\> winrm identify -r:http://winrm_server:5985 -auth:basic -u:user_name -p:password -encoding:utf-8

将 WinRM 配置为使用 HTTPS

您可以将 WinRM 主机配置为通过 HTTPS 协议与 PowerShell插件进行通信。

WinRM 主机需要证书才可以通过 HTTPS 协议进行通信。您可以获取证书或生成证书。例如,您可以使用属于 .NET Framework SDK 一部分的证书创建工具 (makecert.exe) 生成自签名证书。

前提条件

  • 将 WinRM 配置为使用 HTTP 协议。有关详细信息,请参见将 WinRM 配置为使用 HTTP
  • 验证您可以在 WinRM 主机上访问 Microsoft 管理控制台 (mmc.exe)。

过程

  1. 生成自签名证书。
    以下命令行包含使用 makecert.exe 在 WinRM 主机上创建证书的示例语法。

    makecert.exe -r -pe -n "CN=host_name-3,O=organization_name" -e mm/dd/yyyy -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 certificate_name.cer

  2. 通过使用 Microsoft 管理控制台添加生成的证书。
    1. 运行 mmc.exe
    2. 选择文件 > 添加/删除管理单元
    3. 从可用管理单元列表中,选择证书,然后单击添加
    4. 选择计算机帐户并单击下一步
    5. 单击完成
    6. 验证在控制台根 > 证书(本地计算机) > 个人 > 证书控制台根 > 证书(本地计算机) > 受信任的根证书颁发机构 > 证书中安装了证书。
      如果受信任的根证书颁发机构和个人文件夹中未安装证书,则必须手动安装。
  3. 使用正确的指纹和主机名创建 HTTPS 侦听器。
    以下命令行包含用于创建 HTTPS 侦听器的示例语法。

    winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="host_name";CertificateThumbprint="certificate_thumbprint"}

    注: 忽略证书指纹中的空格。
  4. 测试连接。
    以下命令行包含用于测试连接的示例语法。

    winrs -r:https://host_name:port_number -u:user_name -p:password hostname