使用PSEXEC从hudson服务器在远程计算机上运行批处理文件

时间:2010-03-01 18:44:11

标签: continuous-integration hudson psexec

我是Hudson和PSEXEC的新手,我在我的电脑中使用哈德森,我想从hudson build在远程计算机上运行批处理文件。 我使用PSEXEC在远程计算机上运行批处理文件,当我从命令promt执行它成功运行。但我从Hudson做的同样构建它的悬挂..它没有做任何事情。所以请给出任何建议是否有任何其他方式我们可以处理此

我想快速地做这件事......紧急 Anyones帮助很明显

提前感谢。

4 个答案:

答案 0 :(得分:2)

可能是psexec正在等待用户输入吗?在这种情况下,哈德森会挂起。

Hudson是否使用您的用户凭据运行?如果不是午餐,请使用Hudson正在运行的凭据提示,并查看如果您致电psexec会发生什么。如果hudson在本地系统帐户上运行,则无法使用它启动命令提示符。然后尝试使用您的凭据运行Hudson,看看会发生什么。

顺便说一句,您是否检查过Hudsons日志文件(以防万一可能存在某些内容)?

答案 1 :(得分:0)

我遇到了PSEXEC挂起的问题。

我找到的解决方案(拖网搜索AGES后)是将参数 -accepteula 添加到调用的PSEXEC中。哈德森在那之后就停止了。

非常令人沮丧。

答案 2 :(得分:0)

也许为时已晚,但我想我会将其发布给遇到同样问题的其他人。

Psexec从任何CI服务器运行都有问题,无论你有什么CI服务器,无论是Hudson,Teamcity,还是......)。 从构建服务器运行时,Psexec挂起。 它不会挂起所有命令,但是对于某些命令,psexec将挂起。 问题在于psexec将如何读取远程运行命令的输出。 最终的解决方案是使用除psexec之外的其他工具。 You can check this blog of this solution。 但是如果你需要一个更简单的解决方案,并且你不关心命令的输出,我想出了一个简单的解决方案来抑制psexec的输出。 你可以编写一个小的c#程序来运行psexec命令,抑制它的输出。

I blogged about that here

答案 3 :(得分:0)

我想我会回应这个,因为我遇到了与TeamCity和psExec相同的悬挂问题。因为我认为它实际上是Java执行psexec的问题,所以它也适用于Hudson的情况。

虽然我早期遇到了acceptteula问题,但您只需要同意一次并设置注册表设置。由于user327759指示脚本中的-accepteula开关将首次覆盖您的基础,并且永远不会覆盖您的基础。

如果这不能解决您的问题,在我的情况下,您不需要添加" -i"命令开关。例如:psexec -i \ ServerName" C:\ folder \ file.bat"

关于这个解决方案的背景,我已经包含了我的背景故事:

我能够通过MsBuild任务,通过.Net包装器和直接命令提示符使用来执行此PsExec命令,但是TeamCity只会挂起执行。似乎Java在调用psexec exe时期望对标准有一些响应。在远程服务器上,我会看到psexecsvc进程启动并在服务控制台中正确注册,但随后会停止。在阅读了很多这样的帖子之后,我挣扎的时间比我想承认的要长得多,我最终尝试了-i选项,尽管在TeamCity之外的任何其他执行场景中都不需要这样做。 psexec文档指出-i将"运行程序,以便它与远程系统上指定会话的桌面交互。如果未指定会话,则该进程将在控制台会话中运行。"我仍然不清楚为什么这对TeamCity产生了重大影响。