简介
在企业环境中,经常需要利用闲置的 Windows 机器作为临时服务器,或者通过脚本远程调用程序、查看日志文件。Windows 内置的服务「WinRM」(Windows Remote Management)可以满足这一需求。
WinRM 是一种基于简单对象访问协议(SOAP)的防火墙友好协议,允许来自不同供应商的硬件和操作系统进行互操作。它支持 PowerShell 远程执行,是管理远程 Windows 系统的标准方式之一。
被控端配置(Windows 系统)
以下以 Windows 10 或 Windows Server 系统为例,介绍如何配置被控端。
1. 启动 WinRM 服务
以管理员权限打开 CMD 或 PowerShell 命令窗口,输入以下命令启动 WinRM 服务:
winrm quickconfig -q
如果运行报错,提示网络类型设置异常,可以通过快捷键 Win+I 进入网络和 Internet 设置,更改网络配置文件,由'公用'切换为'专用'。
2. 检查 WinRM 服务监听状态
在命令行输入以下命令,查看 WinRM 服务的监听状态。注意记录端口号(Port),后续连接会用到。
winrm e winrm/config/listener
预期输出示例:
Listener
Address = *
Transport = HTTP
Port = 5985
Hostname
Enabled = true
URLPrefix = wsman
CertificateThumbprint
ListeningOn = **
默认情况下,HTTP 监听端口为 5985,HTTPS 为 5986。生产环境建议启用 HTTPS 以提高安全性。
3. 配置 WinRM Client 与 Service
为了允许非加密传输及基本认证(仅用于测试环境,生产环境请谨慎),需进行如下配置:
配置 Client:
winrm set winrm/config/client @{AllowUnencrypted="true"}
winrm set winrm/config/client @{TrustedHosts="*"}
winrm set winrm/config/client/auth @{Basic="true"}
配置 Service:
winrm set winrm/config/service @{AllowUnencrypted="true"}
winrm set winrm/config/service/auth @{Basic="true"}
配置完成后,可通过 winrm get winrm/config 验证配置是否生效。
4. 防火墙设置
确保 Windows 防火墙允许入站连接。通常 winrm quickconfig 会自动添加规则,但手动确认更稳妥。
- 入站规则:TCP 端口 5985(HTTP)或 5986(HTTPS)。
- 允许应用:Windows Remote Management (HTTP-In)。
控制端配置(Python)
在控制端(如 Mac OSX、Linux 或另一台 Windows),只需安装 pywinrm 依赖包即可。


