Windows 远程管理的安装和配置

若要运行 Windows 远程管理 (WinRM) 脚本,并使 Winrm 命令行工具执行数据操作,必须同时安装和配置 WinRM。

以下元素也依赖于 WinRM 配置:

WinRM 的安装位置

WinRM 会随所有当前支持的 Windows 操作系统版本自动安装。

WinRM 和 IPMI 的配置

下方 WinRM 和 智能平台管理接口 (IPMI) WMI 提供程序 组件随操作系统一起安装:

  • WinRM 服务在 Windows Server 2008 及更高版本上自动启动。 在早期版本的 Windows(客户端或服务器上),需要手动启动服务。
  • 默认情况下,不配置 WinRM 侦听器。 即使 WinRM 服务正在运行,也无法接收或发送请求数据的 WS-Management 协议消息
  • Internet 连接防火墙 (ICF) 阻止访问端口。

在命令提示符处键入以下命令,使用 winrm 命令查找侦听器和地址:

winrm enumerate winrm/config/listener

若要检查配置设置的状态,请键入以下命令:

winrm get winrm/config

快速默认配置

在本地计算机上启用 WS-Management 协议,并使用命令 winrm quickconfig 设置远程管理的默认配置。

winrm quickconfig 命令(可以缩写为 winrm qc)执行以下操作:

  • 启动 WinRM 服务,并将服务启动类型设置为自动启动
  • 为在任何 IP 地址上使用 HTTP 或 HTTPS 收发 WS-Management 协议消息的端口配置侦听器。
  • 定义 WinRM 服务的 ICF 异常,并打开 HTTP 和 HTTPS 的端口。

注意

winrm quickconfig 命令仅为当前用户配置文件创建防火墙例外。 如果出于任何原因更改了防火墙配置文件,则运行 winrm quickconfig 以启用新配置文件的防火墙例外(否则异常可能未被启用)。

若要检索有关自定义配置的信息,请在命令提示符处键入以下命令:

winrm help config

使用默认设置配置 WinRM

  1. 在以本地计算机管理员帐户身份运行的命令提示符下,运行以下命令:

    winrm quickconfig
    

    如果未以本地计算机管理员身份运行,之后在开始菜单中选择以管理员身份运行,或者在命令提示符下使用Runas命令。

  2. 当工具显示是否执行这些更改 [y/n]?时,请键入 y

    如果配置成功,会显示以下输出。

    WinRM has been updated for remote management.
    
    WinRM service type changed to delayed auto start.
    WinRM service started.
    Created a WinRM listener on https://* to accept WS-Man requests to any IP on this machine.
    
  3. 保留 WinRM 的客户端和服务器组件的默认设置,或对其进行自定义。 例如,可能需要将某些远程计算机添加到客户端配置 TrustedHosts 列表。

    在无法建立相互验证时设置受信任的主机列表。 Kerberos 允许相互验证,但不能用于工作组;只能用于域。 为工作组设置受信任的主机时,最佳做法是尽可能限制列表。

  4. 键入以下命令创建 HTTPS 侦听器:

    winrm quickconfig -transport:https
    

    注意

    打开端口 5986,使 HTTPS 传输正常工作。

侦听器和 WS-Management 协议默认设置

若要获取侦听器配置,请在命令提示符处键入 winrm enumerate winrm/config/listener 。 侦听器由传输(HTTP 或 HTTPS)和 IPv4 或 IPv6 地址定义。

winrm quickconfig 命令为侦听器创建以下默认设置。 您可以创建多个侦听器。 有关详细信息,请在命令提示符下键入 winrm help config

Address

指定创建此侦听器的地址。

运输

指定要用于发送和接收 WS-Management 协议请求和响应的传输。 该值必须为 HTTPHTTPS。 默认值为 HTTP。

端口

指定为其创建此侦听器的 TCP 端口。

WinRM 2.0:默认 HTTP 端口为 5985。

主机名

指定运行 WinRM 服务的计算机主机名。 该值必须是完全限定的域名、IPv4 或 IPv6 文字字符串或通配符。

已启用

指定是启用还是禁用侦听器。 默认值为 True

URLPrefix

指定用于接受 HTTP 或 HTTPS 请求的 URL 前缀。 此字符串仅包含字符 a-z、A-Z、9-0、下划线 (_) 和斜杠 (/)。 字符串不得以斜杠 (/) 开头或结尾。 例如,如果计算机名称为 SampleMachine,则 WinRM 客户端将在目标地址中指定 https://SampleMachine/<URLPrefix> 。 默认 URL 前缀为 wsman

CertificateThumbprint

指定服务证书的指纹。 此值表示在证书的指纹 字段中找到的两位数十六进制值的字符串。 该字符串包含证书的 SHA-1 哈希。 在基于客户端证书的身份验证中使用证书。 证书只能映射到本地用户帐户。 它们不能与域账户一起使用。

ListeningOn

指定侦听器使用的 IPv4 和 IPv6 地址。 例如,111.0.0.1, 111.222.333.444, ::1, 1000:2000:2c:3:c19:9ec8:a715:5e24, 3ffe:8311:ffff:f70f:0:5efe:111.222.333.444, fe80::5efe:111.222.333.444%8, fe80::c19:9ec8:a715:5e24%6

协议默认设置

许多配置设置(例如 MaxEnvelopeSizekbSoapTraceEnabled)决定了 WinRM 客户端和服务器组件与 WS-Management 协议的交互方式。 以下章节将介绍可用的配置设置。

MaxEnvelopeSizekb

指定以 KB 为单位的最大简单对象访问协议 (SOAP) 数据。 默认值为 150 千字节。

注意

如果 MaxEnvelopeSizekb 设置为大于 1039440 的值,则该行为不受支持。

MaxTimeoutms

指定可用于除 Pull 请求以外的任何请求的最大超时(以毫秒为单位)。 默认值为 60000。

MaxBatchItems

指定在 Pull 响应中可以使用的最大元素数。 默认值为 32000。

MaxProviderRequests

指定该服务所允许的最大并发请求数。 默认值为 25。

WinRM 2.0:此设置已弃用,被设为只读。

WinRM 客户端默认配置设置

WinRM 的客户端版本具有以下默认配置设置。

NetworkDelayms

指定客户端计算机等待适应网络延迟时间的额外时间(以毫秒为单位)。 默认值为 5000 毫秒。

URLPrefix

指定用于接受 HTTP 或 HTTPS 请求的 URL 前缀。 默认 URL 前缀为 wsman

AllowUnencrypted

允许客户端计算机请求未加密的通信。 默认情况下,客户端计算机需要加密的网络流量,此设置为 False

基本

允许客户端计算机使用基本身份验证。 基本身份验证是一种将用户名和密码以明文形式发送到服务器或代理的方案。 此方法是最不安全的身份验证方法。 默认值为 True

摘要

允许客户端使用摘要式身份验证。 摘要式身份验证是一种质询响应方案,该方案将服务器指定的数据字符串用于质询。 仅客户端计算机可以发起摘要式身份验证请求。

客户端计算机将请求发送到服务器进行身份验证,并接收来自该服务器的令牌字符串。 然后,客户端计算机发送资源请求,包括用户名和密码的加密哈希以及令牌字符串。

HTTP 和 HTTPS 支持摘要式身份验证。 WinRM Shell 客户端脚本和应用程序可以指定摘要式身份验证,但 WinRM 服务不接受摘要式身份验证。 默认为 True

注意

通过 HTTP 进行摘要式身份验证被视为不安全。

证书

允许客户端使用基于客户端证书的身份验证。 基于证书的身份验证是服务器对 X509 证书标识的客户端进行身份验证的方案。 默认值为 True

Kerberos

允许客户端使用 Kerberos 身份验证。 Kerberos 身份验证是一种客户端和服务器使用 Kerberos 证书在其中进行相互身份验证的方案。 默认值为 True

协商

允许客户端使用协商身份验证。 协商身份验证是一种客户端在其中将请求发送到服务器以进行身份验证的方案。

服务器将确定是使用 Kerberos 协议还是 NT LAN Manager (NTLM)。 选择 Kerberos 协议对域帐户进行身份验证。 为本地计算机帐户选择 NTLM。 必须为域用户指定用户名,格式为 domain\user_name。 必须为服务器计算机上的本地用户指定 server_name\user_name 格式的用户名。 默认为 True

CredSSP

允许客户端使用凭据安全支持提供程序 (CredSSP) 身份验证。 CredSSP 使应用程序能够将用户的凭据从客户端计算机委托给目标服务器。 默认为 False

DefaultPorts

指定客户端用于 HTTP 或 HTTPS 的端口。

WinRM 2.0:默认 HTTP 端口为 5985,默认 HTTPS 端口为 5986。

TrustedHosts

指定受信任的远程计算机列表。 工作组中的其他计算机或不同域中的计算机应添加到此列表中。

注意

受信任的主机列表中的计算机不会进行身份验证。 客户端可能会向那些计算机发送凭据信息。

如果为受信任的主机指定了 IPv6 地址,则必须将地址括在方括号中,如以下 Winrm 实用工具命令所示:

winrm set winrm/config/client '@{TrustedHosts ="[0:0:0:0:0:0:0:0]"}'

有关如何将计算机添加到 TrustedHosts 列表的详细信息,请键入 winrm help config

WinRM 服务默认配置设置

WinRM 的服务版本具有以下默认配置设置。

RootSDDL

指定控制对侦听器的远程访问的安全描述符。 默认为 O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;ER)S:P(AU;FA;GA;;;WD)(AU;SA;GWGX;;;WD)

MaxConcurrentOperations

并发操作的最大数量 默认值为 100。

WinRM 2.0MaxConcurrentOperations设置已弃用,被设为只读。 此设置已被替换为 MaxConcurrentOperationsPerUser

MaxConcurrentOperationsPerUser

指定任何用户可以在同一系统上远程打开的最大并发操作数。 默认值为 1500。

EnumerationTimeoutms

指定 Pull 消息之间的空闲超时(以毫秒为单位)。 默认值为 60000。

MaxConnections

指定服务可以同时处理的最大活动请求数。 默认值为 300。

WinRM 2.0:默认值为 25。

MaxPacketRetrievalTimeSeconds

指定 WinRM 服务检索数据包所花费的最大时间长度(以秒为单位)。 默认值为 120 秒。

AllowUnencrypted

允许客户端计算机请求未加密的通信。 默认为 False

基本

允许 WinRM 服务使用基本身份验证。 默认为 False

证书

允许 WinRM 服务使用基于客户端证书的身份验证。 默认为 False

Kerberos

允许 WinRM 服务使用 Kerberos 身份验证。 默认为 True

协商

允许 WinRM 服务使用 Negotiate 身份验证。 默认为 True

CredSSP

允许 WinRM 服务使用凭据安全支持提供程序 (CredSSP) 身份验证。 默认为 False

CbtHardeningLevel

设置在身份验证请求中用于通道绑定令牌要求的策略。 默认值为宽松

DefaultPorts

指定 WinRM 服务用于 HTTP 或 HTTPS 的端口。

WinRM 2.0:默认 HTTP 端口为 5985。 默认的 HTTPS 端口为 5986。

IPv4Filter 和 IPv6Filter

指定侦听器可以使用的 IPv4 或 IPv6 地址。 默认值是 IPv4Filter = *IPv6Filter = *

  • IPv4:IPv4 文字字符串由四个点分十进制数字组成,每个数字介于 0 到 255 之间。 例如:192.168.0.0。
  • IPv6:IPv6 文字字符串括在括号中,并包含用冒号分隔的十六进制数字。 例如:[::1] 或 [3ffe:ffff::6ECB:0101]。

EnableCompatibilityHttpListener

指定是否启用兼容性 HTTP 监听器。 如果此设置为 True,则侦听器除了侦听端口 5985 外,还会侦听端口 80。 默认为 False

EnableCompatibilityHttpsListener

指定是否启用兼容性 HTTPS 侦听器。 如果此设置为 True,则侦听器除了侦听端口 5986 外,还会侦听端口 443。 默认为 False

Winrs 默认配置设置

winrm quickconfig 命令还配置 Winrs 默认设置。

AllowRemoteShellAccess

允许访问远程外壳程序。 如果将此参数设置为 False,服务器将拒绝新的远程 shell 连接。 默认为 True

IdleTimeout

指定当远程外壳程序中不存在任何用户活动时,远程外壳程序保持打开的最大时间(以毫秒为单位)。 远程 shell 在该时间后被删除。

WinRM 2.0:默认值为 180000。 最小值为 60000。 将此值设置为小于 60000 不会影响超时行为。

MaxConcurrentUsers

指定可以通过远程外壳程序在同一计算机上并发执行远程操作的最大用户数。 如果新的远程 shell 连接超出限制,计算机将拒绝这些连接。 默认值为 5。

MaxShellRunTime

指定允许远程命令或脚本运行的最大时间(以毫秒为单位)。 默认值为 28800000。

WinRM 2.0MaxShellRunTime 被设置为只读。 更改 MaxShellRunTime 值对远程 shell 没有任何影响。

MaxProcessesPerShell

指定允许任何外壳程序操作启动的最大进程数。 值为 0 则允许无限数量的进程。 默认值为 15。

MaxMemoryPerShellMB

指定每个 shell 分配的最大内存量,包括 shell 的子进程。 默认值为 150 MB。

MaxShellsPerUser

指定任何用户可以在同一计算机上远程打开的最大并发 shell 数量。 如果启用此策略设置,则如果计数超过指定的限制,用户将无法打开新的远程 shell。 如果禁用或未配置此策略设置,则默认情况将限制设置为每个用户 5 个远程 shell。

使用组策略配置 WinRM

使用组策略编辑器为企业中的计算机配置 Windows Remote Shell 和 WinRM。

使用组策略进行配置:

  1. 以管理员身份打开“命令提示符”窗口。
  2. 在命令提示符下键入 gpedit.msc。 此时将打开组策略对象编辑器窗口。
  3. 计算机配置\管理模板\Windows 组件下,找到 Windows 远程管理Windows 远程 Shell 组策略对象 (GPO)。
  4. 扩展选项卡上,选择一个设置以查看说明。 双击设置进行编辑。

Windows 防火墙和 WinRM 2.0 端口

从 WinRM 2.0 开始,配置 Winrm quickconfig 的默认侦听器端口是用于 HTTP 传输的端口 5985和用于 HTTPS 的端口 5986。 可以在任意端口上配置 WinRM 侦听器。

如果将计算机升级到 WinRM 2.0,则会迁移以前配置的侦听器,但仍接收流量。

WinRM 安装和配置说明

WinRM 不依赖于任何其他服务,但 WinHttp 除外。 如果 IIS 管理服务安装在同一台计算机上,则可能会看到无法在 Internet Information Services (IIS) 之前加载 WinRM 的提示消息。 但是,WinRM 实际上并不依赖于 IIS。 由于加载顺序可确保 IIS 服务在 HTTP 服务之前启动,因此会产生这些消息。 WinRM 要求 WinHTTP.dll 注册。

如果计算机上安装了 ISA2004 防火墙客户端,则可能会导致 Web Services for Management (WS-Management) 客户端停止响应。 若要避免此问题,请安装 ISA2004 防火墙 SP1。

如果两个具有不同 IP 地址的侦听器服务配置了相同的端口号和计算机名称,则 WinRM 仅侦听或接收一个地址上的消息。 使用此方法是因为 WS-Management 协议使用的 URL 前缀是相同的。

IPMI 驱动程序和提供程序安装说明

驱动程序可能无法检测到来自 Microsoft 的 IPMI 驱动程序是否存在。 如果驱动程序无法启动,则可能需要禁用它。

如果基板管理控制器 (BMC) 资源出现在系统 BIOS 中,则 ACPI(即插即用)会检测 BMC 硬件,并自动安装 IPMI 驱动程序。 并非所有 BMC 都支持即插即用。 如果即插即用检测到 BMC,则在安装硬件管理组件之前,未知设备会显示在设备管理器中。 安装驱动程序后,Microsoft ACPI 通用 IPMI 兼容设备的新组件将显示在设备管理器中。

如果系统未自动检测 BMC 并安装驱动程序,但在安装过程中检测到 BMC,请创建 BMC 设备。 若要创建该设备,请在命令提示符处键入以下命令:

Rundll32 ipmisetp.dll, AddTheDevice

此命令运行后,将会创建 IPMI 设备且设备会显示在设备管理器中。 如果卸载硬件管理组件,设备会被删除。

有关详细信息,请参阅硬件管理介绍

IPMI 提供程序将硬件类放置在 WMI 的root\hardware 命名空间中。 有关硬件类的详细信息,请参阅 IPMI 提供程序。 有关 WMI 命名空间的详细信息,请参阅 WMI 体系结构

WMI 插件配置说明

从 Windows 8 和 Windows Server 2012 开始,WMI 插件拥有自己的安全配置。 若使普通用户或超级用户(非管理员)能够使用 WMI 插件,请在配置侦听器后为该用户启用访问权限。 通过以下步骤之一设置用户以远程访问 WMI

  • 运行lusrmgr.msc以将用户添加到本地用户和组窗口下的 WinRMRemoteWMIUsers__组。

  • 使用 Winrm 命令行工具为 WMI 插件命名空间配置安全描述符:

    winrm configSDDL http://schemas.microsoft.com/wbem/wsman/1/wmi/ WmiNamespace
    

显示用户界面时,添加用户。

设置用户以远程访问 WMI 后,必须设置 WMI 以允许用户访问插件。 若要允许访问,请运行 wmimgmt.mscWMI 控制窗口中修改要访问的命名空间的 WMI 安全性。

用于管理的大多数 WMI 类位于 root\cimv2 命名空间中。