修复 WinRM 错误: "WinRM 客户端从远程 WS-Management 服务收到一个未知的 HTTP 状态代码"
没有.
当本地Windows远程管理 (WinRM) 客户端试图连接到远程目标机器时,该错误发生,但远程Web服务器或WS管理服务返回了意想不到的HTTP响应代码 (如403 Forbidden,404 Not Found或500 Internal Server Error) 而不是标准的WinRM协议响应.这种不匹配通常是由于配置错误的WinRM收听器,与互联网信息服务 (IIS) 的端口冲突,不正确的身份验证设置,代理服务器干扰或使用HTTPS时的SSL/TLS证书不匹配.
逐步修复问题
步骤1:验证并重新启动 WinRM 服务
确保 Windows 远程管理服务在本地计算机和远程计算机上都在运行.
- 按下
Windows Key + R, 类型services.msc,然后按下 Enter. - 滚向下来查找. Windows Remote Management (WS-Management).
- 检查它的状态. 如果它没有运行,右键单击它并选择 Start.
- 如果它已经运行,右键单击它,选择 Restart.
- 双击服务,更改 Startup type 为了 Automatic 然后点击 OK.
步骤2:检查港口冲突 (特别是与IIS)
WinRM 使用默认端口 5985 (HTTP) 这里是我的家. 5986 (HTTPS) 如果另一个应用程序 (如 IIS) 在这些端口上收听,或者如果 WinRM 意外地绑定到 80/443 端口,则会导致此错误.
- 打开 PowerShell 作为一个管理员.
- 运行下面的命令查看WinRM正在收听哪些端口:
winrm enumerate winrm/config/listener - 检查端口是否匹配 5985 或 5986. 如果您注意到冲突或需要重置快速配置,请运行:
winrm quickconfig - 按下 Y 接受任何配置更改.
步骤3:配置可靠主机
如果您连接到Active Directory域环境外的远程机器 (如工作组),您的本地机器必须信任远程主机.
- 打开 PowerShell 在您的本地机器上作为管理员.
- 运行下一个命令,允许连接到所有主机 (或替换
*具有特定的远程IP地址):Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force - 重新启动 WinRM 服务以应用更改:
Restart-Service winrm
步骤4:绕过代理服务器设置
有时,本地系统代理设置将内部 WinRM 流量路由到外部代理服务器,该服务器无法识别 WS-Management 流量并返回未知的 HTTP 状态代码.
- 打开 Command Prompt 作为一个管理员.
- 检查是否通过运行配置代理:
netsh winhttp show proxy - 如果一个代理是活跃的,并路由本地流量,通过运行将其重置:
netsh winhttp reset proxy - Alternatively, ensure your environment variables bypass proxies for local addresses by adding the remote machine's IP to your environment's
NO_PROXY这是一份名单.
步骤 5: 调整身份验证设置
如果客户端和服务器不同意身份验证方法 (例如,谈判,基本,CredSSP),该错误可能会触发.
- 打开 PowerShell 作为客户端和远程机器上的管理员.
- 启用标准通过运行谈判身份验证:
Set-Item WSMan:\localhost\Service\Auth\Negotiate -Value $true Set-Item WSMan:\localhost\Client\Auth\Negotiate -Value $true - 如果您的连接策略需要基本身份验证,请明确启用:
Set-Item WSMan:\localhost\Service\Auth\Basic -Value $true Set-Item WSMan:\localhost\Client\Auth\Basic -Value $true
ERROR_WSMAN_INVALID_BATCH_SETTINGS_PARAMETER | ERROR_WSMAN_SERVER_DESTINATION_LOCALHOST | ERROR_WSMAN_UNSUPPORTED_HTTP_STATUS_REDIRECT | ERROR_WSMAN_HTTP_REQUEST_TOO_LARGE_STATUS | ERROR_WSMAN_HTTP_SERVICE_UNAVAILABLE_STATUS
可能有一些错误.. Learn Microsoft