如何修复Windows错误:"WinRM客户端无法处理请求"
当系统无法在本地计算机和远程主机之间建立安全连接时,通常会出现Windows远程管理 (WinRM) 错误. 本指南解释了为什么会发生这种情况,并提供了清晰的,一步一步的解决方案来解决问题.
错误概述和常见原因
这种错误代码通常在使用PowerShell远程操作,管理Hyper-V服务器或运行管理脚本时出现.此消息背后最常见的原因包括:
- Disabled WinRM Service: 该服务在本地或远程机器上都没有运行.
- Authentication Issues: 由于远程主机不值得信任,Windows正在阻止连接.
- Network Location Profile: 网络配置文件设置为"公开",自动阻止WinRM流量.
- Firewall Blockage: Windows防火墙或第三方安全软件阻端口5985 (HTTP) 或端口5986 (HTTPS).
- Incorrect Execution Policy: PowerShell 的限制阻止了远程脚本执行.
逐步修复问题
按照顺序执行这些解决方案. 您必须运行 PowerShell 或命令提示符作为管理员来执行这些命令.
修复1:启用并启动WinRM服务
绝对的第一步是确保WinRM服务正确运行,并配置在两台计算机上自动启动.
- 按下 Windows Key, 类型
powershell,右键按下 Windows PowerShell,并选择 Run as administrator. - 键入下面的命令来配置WinRM服务,然后按下 Enter:
winrm quickconfig - If prompted to confirm changes (such as creating exceptions in the firewall or changing the service startup type), type
y(是的) 并按下. Enter. - 接下来,手动强迫启动 WinRM 服务,以确保它是活跃的:
Start-Service WinRM - 将服务启动类型设置为自动,以便在Windows启动时运行:
Set-Service WinRM -StartupType Automatic
修复2:将远程主机添加到可靠主机列表中
Windows security rules block remote connections unless the target machine is explicitly trusted. You must configure the TrustedHosts 您的客户端计算机上的设置.
- 打开 Windows PowerShell 作为一个管理员.
- 允许连接到 any computer (best for testing or internal private networks), type this command and press Enter:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force - 如果您更愿意只信任一个特定的计算机以提高安全性,请用远程IP地址或主机名称替换星号:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.1.50" -Force - 重新启动 WinRM 服务以应用新配置:
Restart-Service WinRM
修复3:将网络配置文件更改为私有
如果您的网络连接被归类为"公共",因为Windows在公共场所锁定安全.
- 打开 Windows PowerShell 作为一个管理员.
- 通过运行检查您的网络状态:
Get-NetConnectionProfile - 看看这个
NetworkCategory如果它写着 Public 复制下面显示的名称Name. - 改变网络配置文件为 Private 通过运行下面的命令 (取代
YourNetworkName用您实际的网络名称):Set-NetConnectionProfile -Name "YourNetworkName" -NetworkCategory Private
修复4:通过Windows防火墙允许WinRM端口
即使服务正在运行,本地防火墙可能会主动丢弃入入或出入的管理请求.
- 打开 Windows PowerShell 作为一个管理员.
- 运行此命令创建一个新的防火墙规则,允许WinRM HTTP流量 (端口5985):
New-NetFirewallRule -DisplayName "Allow WinRM HTTP" -Direction Inbound -LocalPort 5985 -Protocol TCP -Action Allow - 如果您的环境使用HTTPS连接,请打开端口5986:
New-NetFirewallRule -DisplayName "Allow WinRM HTTPS" -Direction Inbound -LocalPort 5986 -Protocol TCP -Action Allow
修复 5: 调整PowerShell执行策略
过度限制的执行策略可能会阻止Windows处理初始化远程会话所需的脚本.
- 打开 Windows PowerShell 作为一个管理员.
- 检查您当前的执行策略设置:
Get-ExecutionPolicy - 如果政策设置为
Restricted改为RemoteSigned或是Bypass允许地方管理行动:Set-ExecutionPolicy RemoteSigned -Force
验证解决方案
一旦完成以上步骤,您可以验证WinRM客户端是否能正确处理请求.在PowerShell中运行以下命令来测试本地循环回路连接:
Test-WSMan
如果成功,命令将显示WS-Management服务版本和堆版本的信息,这意味着您的WinRM客户端再次完全功能.
ERROR_WSMAN_INVALID_PUBLISHERS_TYPE | ERROR_WSMAN_CLIENT_INVALID_DELIVERY_RETRY | ERROR_WSMAN_CLIENT_NULL_ISSUERS | ERROR_WSMAN_CLIENT_NO_SOURCES | ERROR_WSMAN_INVALID_SUBSCRIBE_OBJECT可能有一些错误.. Learn Microsoft