MSBuild在执行批处理文件时,PSExec无错误地挂起。

3
作为我们团队构建MSBuild脚本的一部分,我们有一个部署批处理文件需要在远程服务器上执行:
<Exec Command="psexec -accepteula \\servername D:\Build_Drop\DeploySites.bat "/>

我可以确认这不是权限或防火墙问题:如果将bat命令更改为运行iisreset或calc.exe等命令,则该命令将正常工作。
我尝试过-s和>nul标志,还尝试在批处理文件中包装一个调用cmd的命令。我已经尝试过带引号和不带引号的bat cmd。
我尝试过的所有选项都可以在构建服务器上的cmd行中正常工作,但是从构建脚本本身无法正常工作。
有什么想法吗?

目标机器上的操作系统是什么?UAC是否已启用?此外,如果您使用构建服务帐户登录到构建机器并执行相同的命令“psexec -accepteula \servername D:\Build_Drop\DeploySites.bat”,会发生什么情况?您应该获得与作为团队构建的一部分运行时相同的行为。当您尝试在RDP会话中运行它时,可能会收到一些错误消息,而在构建过程中运行时则不会看到这些消息。团队构建有一个“吞噬”异常消息的习惯。 - Derek Evermore
1个回答

6

在psexec中添加-i参数似乎已经生效。

奇怪的是,我们现在收到了以下错误信息:

The command "psexec -accepteula \\server -i cmd /c "D:\Build_Drop\DeploySites.bat"" exited with code 5. Please verify that you have sufficient rights to run this command.

但实际上该命令确实起作用。

1
已经使用了-i参数,成功解决了msbuild psexec挂起的问题,感谢。同时也没有出现代码5错误。我们有很多psexec调用,当我将-i修复应用到另一个psexec调用时,出现了代码5错误。但是对于那个psexec调用,如果去掉-i,它就可以正常工作。因此,建议仅在出现挂起情况时使用-i开关。我怀疑这与被调用的可执行文件是否与控制台交互以及是否期望从中获得一些响应有关,导致它挂起,除非psexec也与控制台交互。 - Mickey Puri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接