要在 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

Kerberos 身份验证

在添加和管理 PowerShell 主机时可以使用 Kerberos 身份验证。借助 Kerberos 身份验证,域用户可以通过 WinRM 在启用 PowerShell 的远程计算机上运行命令。

要在 PowerShell 主机上配置 WinRM,请运行以下命令。
winrm quickconfig
winrm set winrm/config/service/auth '@{Kerberos="true"}'
winrm set winrm/config/winrs @{MaxMemoryPerShellMB="2048"}

有关详细信息,请参见为 Automation Orchestrator 插件配置 Kerberos 身份验证

将 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 协议进行通信。您可以获取证书或生成证书。

前提条件

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

过程

  1. 生成自签名证书。
    以下命令行包含使用 Powershell Cmdlet New-SelfSignedCertificate 在 WinRM 主机上创建证书的示例语法。
    New-SelfSignedCertificate -CertStoreLocation cert:\localmachine\my -DnsName ("machinename.subdomain.company.com", "machinename") -NotAfter (get-date).AddYears(5) -Provider "Microsoft RSA SChannel Cryptographic Provider" -KeyLength 2048

    在此示例中,-NotAfter 参数指定证书将在 5 年后过期。如果未指定此参数,证书将在 1 年后过期。了解有关创建自签名证书的更多信息。

  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