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 服务,并将服务启动类型设置为 自动启动
  • 为使用 HTTP 或 HTTPS 在任何 IP 地址上发送和接收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

地址

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

Transport

指定要用于发送和接收 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

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

注意

如果 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

Negotiate

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

服务器确定是使用 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.0:该 MaxConcurrentOperations 设置已弃用,并设置为只读。 此设置已替换为 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

Negotiate

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

CredSSP

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

CbtHardeningLevel

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

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 中没有用户活动时,远程 shell 保持打开状态的最长时间(以毫秒为单位)。 在该时间之后,远程 shell 将被删除。

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

MaxConcurrentUsers

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

MaxShellRunTime

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

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

MaxProcessesPerShell

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

MaxMemoryPerShellMB

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

MaxShellsPerUser

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

使用 组策略 配置 WinRM

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

若要配置 组策略:

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

Windows 防火墙和 WinRM 2.0 端口

从 WinRM 2.0 开始,配置 Winrm quickconfig 的默认侦听器端口为端口 5985(用于 HTTP 传输)和端口 5986(用于 HTTPS)。 可以在任意端口上配置 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 的 根\硬件命名空间 中。 有关硬件类的详细信息,请参阅 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.msc 以修改 WMI 控制窗口中要访问的 命名空间WMI 安全性。

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