【问题标题】:PowerShell Remoting error with TFS build Visual Studio Test Agent Deployment taskTFS 构建 Visual Studio 测试代理部署任务的 PowerShell 远程处理错误
【发布时间】:2018-12-24 06:58:56
【问题描述】:

我正在致力于将自动化 UI 功能测试集成到非 XAML TFS 构建中。

我的构建定义指定了以下构建步骤: - 获取资源 - NuGet 安装程序 - 微软构建 - Windows 机器文件复制 - Visual Studio 测试代理部署 - 运行功能测试

前四个步骤成功完成。第 4 步(Windows 机器文件复制)将我们的测试项目应用程序文件夹内容从我们的构建服务器复制到另一个远程 VM,托管我们的测试代理。目的是在构建服务器上完成构建(如当前设置),然后将测试项目复制到测试代理服务器,部署测试代理并在测试 VM 上运行功能测试。

我在第 5 步(Visual Studio 测试代理部署)中遇到了问题;返回以下错误:

“[服务器名称]:5986”发生错误。详细信息:'连接到远程服务器 [server_name] 失败并显示以下错误消息:客户端无法连接到请求中指定的目标。验证目标上的服务是否正在运行并且正在接受请求。请查阅在目标(最常见的是 IIS 或 WinRM)上运行的 WS-Management 服务的日志和文档。如果目标是 WinRM 服务,在目标上运行以下命令来分析和配置 WinRM 服务:“winrm quickconfig”。有关详细信息,请参阅 about_Remote_Troubleshooting 帮助主题。如需疑难解答,请参阅https://aka.ms/remotevstest

我对此错误的研究表明该问题与 PowerShell 远程处理有关,而不是与 TFS 构建有关(TFS 构建任务包装了要在远程 VM 上执行的 PowerShell 命令)。

我已根据错误消息建议检查并仔细检查了目标(测试代理)服务器上的 WinRM 服务; WinRM 服务已打开并配置为接受请求。我还按照建议运行了“winrm quickconfig”命令。问题依然存在。

我们的服务器在同一个域中。我拥有测试代理(远程)VM 的管理权限,但无权访问构建(本地)VM。

我已经为这个问题苦苦挣扎了一段时间;我非常感谢任何可能有助于解决问题的见解。

感谢收看。

更新:

嗨,安迪,感谢您的关注和回答。

我按照您的建议按照步骤操作:

按照您提供的链接,Windows 8.1 和 Windows Server 2012 R2,我发现“重要此更新已被更新 2919355 取代。”检查我的测试代理框后,已安装更新 2919355。

“Enter-PSSession localhost”cmdlet 返回错误: “连接到远程服务器 localhost 失败并显示以下错误消息:WinRM 客户端向 HTTP 服务器发送了一个请求,并得到一个响应,说请求的 HTTP URL 不可用。这通常由不支持 WS 的 HTTP 服务器返回-管理协议...”

然后我按照建议执行了“启用-PSRemoting”并确认“是”以执行每个操作。此后,再次执行“Enter-PSSession localhost”返回与之前相同的错误。

最后,我再次尝试了“Enable-PSRemoting -Force”;这返回: “WinRM 已设置为在此计算机上接收请求。 WinRM 已设置为在此计算机上进行远程管理。"

进一步尝试在服务器上远程执行 PS1 脚本返回原始错误。

我的测试代理服务器运行的是 Windows Server 2012 R2,我使用的是 PowerShell 4.0 版。

【问题讨论】:

  • 托管您的测试代理的 VM 的操作系统版本是什么?
  • 测试代理 VM 正在运行 Windows Server 2012 R2。

标签: tfsbuild powershell-remoting


【解决方案1】:

根据错误消息,这是由于 WinRM 配置中的问题。

确保您在构建代理目标机器上启用了PSRemoting,运行命令Enable-PSRemoting -Force

请尝试以下方法来缩小问题范围:

  • 这可能与package KB2883200Windows 8.1 and Windows Server 2012 R2 有关。所以,在这种情况下,你可以检查你是否 已经安装了补丁KB2883200,如果不只是下载和 安装它,然后重试(您可能需要在之后重新启动 VM
    安装知识库)。
  • 检查您是否在测试代理虚拟机上启用了PSRemoting

    1. 远程到虚拟机,以管理员身份运行 PowerShell,运行命令:

      Enter-PSSession localhost

    2. 如果失败,那么您需要通过运行以下命令来启用 PSRemoting 命令:

      Enable-PSRemoting

    3. 如果这不起作用或它说它已经设置,然后尝试 运行以下命令:

      Enable-PSRemoting -Force

此外,您可以参考以下文章手动配置 WinRM 服务:

How to Run PowerShell Commands on Remote Computers

【讨论】:

  • 嗨,安迪,感谢您的关注和提供建议。请参阅上面更新的原始问题。再次感谢..
  • @TheFuriousBear 配置问题。确保在服务器上禁用 IPv6。只需参考此博客进行故障排除(最后一段):rcmtech.wordpress.com/2016/10/21/…。如果还是不行,我建议你设置一个新的虚拟机,然后重新配置。
  • 嗨,安迪,真有趣,我大约半小时前看过同一个博客。我检查并发现盒子上已经禁用了 IPv6。可悲的是,问题仍然存在..
【解决方案2】:

好的,正如我之前在对原始帖子的更新中指出的那样,我已经(反复)用尽了 Andy 和其他地方提供的上述建议。

即使“Enable-PSRemoting -Force”cmdlet 的执行已返回“WinRM 已设置为在此计算机上接收请求。WinRM 已设置为在此计算机上进行远程管理。”,在测试代理中服务器的管理控制台(在Local Computer Policy\Computer Configuration\Administrative Templates\Windows Components\Windows Remote Management (WinRM)\WinRM Service\ 下),设置“Allow remote server management through WinRM”被标记为“Not configured”。

我将其更新为“启用”。

然后我在 Windows 防火墙中创建了一个新的入站规则(在更新上面的 WinRM 服务配置时提示),配置为允许安全连接,添加我指定的构建服务器,通过默认的 TCP 端口 5985。

这解决了问题。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
相关资源
最近更新 更多