TFS生成Visual Studio测试代理部署任务出现PowerShell远程处理错误



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

我的生成定义指定了以下生成步骤:-获取来源-NuGet安装程序-MSBuild-Windows计算机文件副本-Visual Studio测试代理部署-运行功能测试

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

我遇到了步骤5(VisualStudio测试代理部署)的问题;返回以下错误:

"[server_name]:5986"上发生错误。详细信息:'连接到远程服务器[server_name]失败,返回以下错误消息:客户端无法连接到请求中指定的目标。请验证目标上的服务是否正在运行并正在接受请求。有关在目标(最常见的是IIS或WinRM)上运行的WS-Management服务,请参阅日志和文档。如果目标是WinRM服务,请在目标上运行以下命令以分析和配置WinRM服务:"WinRM quickconfig"。有关详细信息,请参阅about_Remote_Troubleshooting Help主题。有关故障排除,请参阅https://aka.ms/remotevstest.

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

我已经根据错误消息建议检查并再次检查了目标(测试代理)服务器上的WinRM服务;WinRM服务已打开,并且已配置为接受请求。我还按照建议运行了"winrmquickconfig"命令。尽管如此,这个问题仍然存在。

我们的服务器在同一个域上。我对测试代理(远程)虚拟机具有管理权限,但无法访问构建(本地)虚拟机。

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

谢谢你的光临。

更新:

嗨,安迪,谢谢你的关注;回答。

我按照你的建议采取了以下步骤:

根据您提供的链接,Windows 8.1和Windows Server 2012 R2,我发现"重要信息此更新已被更新2919355取代。"选中我的测试代理框后,更新291935已安装。

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

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

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

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

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

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

确保已在生成代理目标计算机上启用PSRemoting,运行命令Enable-PSRemoting -Force

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

  • 这可能与适用于Windows 8.1和Windows Server 2012 R2。因此,在这种情况下,您可以检查已经安装了补丁KB2883200,如果不只是下载和请安装它,然后重试(安装KB后,您可能需要重新启动VM)
  • 检查您是否已在测试代理VM:上启用PSRemoting

    1. 远程到VM,与管理员一起运行PowerShell,运行命令:

      Enter-PSSession localhost

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

      Enable-PSRemoting

    3. 如果这不起作用,或者它说它已经设置好了,那么尝试运行以下命令:

      Enable-PSRemoting -Force

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

如何在远程计算机上运行PowerShell命令

好吧,正如我早些时候在更新原始帖子时所指出的,我已经(反复)用尽了Andy和其他人提供的建议。

即使"Enable-PSRemoting-Force"cmdlet的执行已返回"WinRM已设置为在此计算机上接收请求。WinRM已设置为此计算机上的远程管理。",在测试代理服务器的管理控制台中(在Local Computer PolicyComputer ConfigurationAdministrative TemplatesWindows ComponentsWindows Remote Management (WinRM)WinRM Service下),设置"Allow remote server management through WinRM"标记为"Not configured"。

我将其更新为"已启用"。

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

这解决了问题。

最新更新