【问题标题】:MSBuild PSExec hangs without error while executing batch fileMSBuild PSExec 在执行批处理文件时挂起且没有错误
【发布时间】:2012-02-21 15:30:29
【问题描述】:

作为 Team Build MSBuild 脚本的一部分,我们有一个部署批处理文件,我需要在远程服务器上执行该文件:

<Exec Command="psexec -accepteula \\servername D:\Build_Drop\DeploySites.bat "/>

我可以确认它不是权限或防火墙:如果将 bat 命令更改为运行 iisreset 或 calc.exe,例如,该命令将起作用。

我已经尝试过 -s 和 >nul 标志,并将批处理文件包装在对 cmd 的调用中。我试过在 bat cmd 周围加引号和不加引号。

我尝试过的所有选项都可以在构建服务器上的 cmd 行中正常工作,但在构建脚本本身中都不能正常工作。

有什么想法吗?

【问题讨论】:

  • 目标机器上的操作系统是什么?是否启用了 UAC?此外,如果您 RDP 进入构建机器并使用构建服务帐户执行相同的命令“psexec -accepteula \\servername D:\Build_Drop\DeploySites.bat”会发生什么?当它作为 Team Build 的一部分运行时,您应该获得相同的行为。当您在 RDP 会话中尝试它时,您可能会收到一些错误消息,而当它作为构建的一部分运行时您看不到这些错误消息。 Team Build 有“吃掉”异常消息的习惯。

标签: batch-file msbuild tfsbuild psexec


【解决方案1】:

向 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.

但该命令确实有效

【讨论】:

  • 已使用 -i 参数并停止 msbuild psexec 挂起,谢谢,它也没有显示代码 5 错误。我们有许多 psexec 调用,当我将 -i 修复应用到另一个 psexec 调用时,我得到了代码 5 错误。但是对于取出 -i 的 psexec 调用,它工作正常。所以建议仅在挂起时使用 -i 开关。我怀疑它与被调用的可执行文件是否与控制台交互有关,然后期待它的一些响应导致它挂起,除非 psexec 也与控制台交互。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
相关资源
最近更新 更多