You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps中执行PowerShell时WinRM创建PSSession失败求助

排查WinRM远程连接问题(已启用HTTPS仍报错)

核心排查步骤

1. 确认HTTPS配置有效性

  • 检查目标机器的WinRM HTTPS监听状态,执行命令:
    winrm enumerate winrm/config/listener
    
    确保输出中存在Transport=HTTPS的监听器,且端口(默认5986)、证书哈希正确匹配已安装的SSL证书。
  • 验证证书有效性:证书必须是由受信任的CA颁发(或自签证书需在客户端机器的受信任根证书存储中导入),且主体名称或SAN包含目标机器的IP地址或主机名。

2. 确认客户端是否指定了HTTPS协议及正确端口

在Azure DevOps的PowerShell任务中,确保配置了:

  • 明确指定-UseSSL参数
  • 端口设置为5986(或自定义的HTTPS端口)
    示例命令片段:
$sessionParams = @{
    ComputerName = '192.168.2.33'
    Port = 5986
    UseSSL = $true
    Credential = $cred
}
$session = New-PSSession @sessionParams

3. 验证显式凭据是否正确传递

  • 确保在Azure DevOps任务中正确配置了目标机器的凭据(用户名/密码),且该账号拥有目标机器的远程管理权限。
  • 必须显式指定-Credential参数,避免使用默认凭据。

4. 检查防火墙规则

  • 目标机器防火墙需允许WinRM HTTPS端口(默认5986)的入站连接。
  • 客户端机器防火墙需允许出站连接到目标机器的5986端口。

5. 临时添加到TrustedHosts(用于排查)

即使启用HTTPS,若证书存在问题(比如自签且未导入信任),可临时将目标IP添加到客户端的TrustedHosts列表排查:

winrm set winrm/config/client '@{TrustedHosts="192.168.2.33"}'

注意:此操作会降低安全性,排查完成后建议移除。

额外验证步骤

  • 使用Test-WSMan命令测试连接:
    Test-WSMan -ComputerName 192.168.2.33 -Port 5986 -UseSSL
    
    若返回正常的WSMan信息,说明基础连接通路正常;若报错,根据错误信息定位证书或端口问题。
  • 检查目标机器的WinRM服务状态:确保WinRM服务已启动并设置为自动运行。

内容的提问来源于stack exchange,提问作者Taqi Rizvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 00:35:32