Test-WSMan 是什么
Test-WSMan 向目标机器的 WinRM 端点发一次协议级探测,能连通就返回服务的版本与厂商信息。它只验证协议层是否可用,不代表认证能通过,但正因为分得清这两层,排错时先跑它就能把问题范围压缩一半:不通是服务、监听、防火墙或网络策略的问题;通了但后续命令认证失败,方向就转到凭据与信任。
基本信息
| 适用平台 | Windows 8 / Server 2012 及以后;WinRM 已启用 |
|---|---|
| 基本语法 | Test-WSMan [-ComputerName x] [-UseSSL] [-Credential ...] |
| 返回内容 | 协议版本、产品厂商与版本 |
| 默认端口 | HTTP 5985、HTTPS 5986 |
| 前置条件 | 目标端 WinRM 服务运行且监听正常 |
| 配套检查 | 服务状态、监听器、防火墙规则、网络可达性 |
排查步骤
- 本机自测:Test-WSMan 不加参数,确认 WinRM 服务本身正常
- 远程协议探测:加 -ComputerName 验证端点可达
- 服务检查:确认 WinRM 服务处于运行状态
- 监听检查:查看 WSMan: 提供程序下的监听器配置
- 防火墙检查:确认远程管理相关规则处于启用状态
- 网络层检查:先 ping 与端口探测,排除策略拦截
常用示例
常用示例
Test-WSMan # 本机自测,先排除服务端问题
Test-WSMan -ComputerName srv01 # 远程协议探测
Test-WSMan -ComputerName srv01 -UseSSL # 走 HTTPS 端点
Get-Service WinRM | Select-Object Name, Status, StartType # 服务状态
Get-ChildItem WSMan:\localhost\Listener | Select-Object Keys # 监听器配置
Get-NetFirewallRule -DisplayGroup 'Windows 远程管理' | Select-Object DisplayName, Enabled, Direction # 防火墙
Test-NetConnection srv01 -Port 5985 # 端口层验证现象与方向
| 现象 | 含义 | 下一步 |
|---|---|---|
| 本地通、远程不通 | 网络或对方服务问题 | 查端口与防火墙 |
| 超时而非拒绝 | 被网络策略静默丢弃 | 确认隔离与路由策略 |
| 协议通但认证失败 | 凭据或信任问题 | 查账号、域信任与 SPN |
| 报 SSL 错误 | 走 HTTPS 但证书不受信 | 校验证书链与名称 |
| 名称解析失败 | DNS 或 hosts 问题 | 先解决解析 |
Test-WSMan 成功只说明协议层通,认证失败要等 Invoke-Command 之类的命令才会暴露;把两层分开看,排错方向的判断会准确很多。
网络策略隔离或跨网段限制会让探测超时而不是明确拒绝,看起来像对方服务没起,此时先用端口探测与路由检查排除网络层,再回来怀疑 WinRM。