我正在努力将自动UI功能测试集成到非XAML TFS构建中。
我的构建定义指定了以下构建步骤: - 获取源 - NuGet安装程序 - MSBuild - Windows机器文件复制 - Visual Studio测试代理部署 - 运行功能测试
前四个步骤成功完成。步骤4(Windows机器文件复制)将我们的测试项目应用程序文件夹内容从我们的构建服务器复制到托管我们的测试代理的另一个远程VM。目的是在构建服务器上完成构建(如当前设置),然后将测试项目复制到测试代理服务器,部署测试代理并在测试VM上运行功能测试。
我遇到了第5步(Visual Studio测试代理部署)的问题;返回以下错误:
''[server_name]:5986'发生错误。详细信息:'连接到远程服务器[server_name]失败,并显示以下错误消息:客户端无法连接到请求中指定的目标。验证目标上的服务是否正在运行并且正在接受请求。查阅目标上运行的WS-Management服务的日志和文档,最常见的是IIS或WinRM。如果目标是WinRM服务,请在目标上运行以下命令以分析和配置WinRM服务:“winrm quickconfig”。有关详细信息,请参阅about_Remote_Troubleshooting帮助主题。'。有关故障排除,请参阅https://aka.ms/remotevstest。
我对此错误的研究表明该问题与PowerShell Remoting有关,而不是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-Management协议的HTTP服务器返回...“
然后我根据建议执行'Enable-PSRemoting'并确认'是'以执行每个操作。在此之后,“Enter-PSSession localhost”的另一次执行返回了与之前相同的错误。
最后,我再次尝试'Enable-PSRemoting -Force';返回:“WinRM已经设置为在此计算机上接收请求.WinRM已经设置为在此计算机上进行远程管理。”
进一步尝试在服务器上远程执行PS1脚本会返回原始错误。
我的测试代理服务器正在运行Windows Server 2012 R2,我使用的是PowerShell 4.0版。
根据错误消息,这是由于WinRM配置中的问题。
确保已在构建代理程序和目标计算机上启用PSRemoting,运行命令Enable-PSRemoting -Force
。
请尝试下面的内容来缩小问题范围:
KB2883200
,如果不是仅下载并安装它,然后再次尝试(您可能需要重新启动VM后
安装KB)。PSRemoting
:
远程到VM,使用管理员运行PowerShell,运行命令:
Enter-PSSession localhost
如果失败,则需要通过运行以下命令启用PSRemoting:
Enable-PSRemoting
如果这不起作用或者说已经设置了,那么尝试运行以下命令:
Enable-PSRemoting -Force
此外,您可以参考以下文章手动配置WinRM服务:
好的,正如我在原帖的更新中所说的那样,我已经(反复)用尽了安迪和其他地方提出的建议。
即使执行'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添加我指定的构建服务器。
这解决了这个问题。