我是使用 PSEXEC 的 Hudson 新手,我在我的计算机中使用 hudson,我想从 hudson 构建在远程计算机上运行批处理文件。我使用 PSEXEC 在远程计算机上运行批处理文件,当我从命令提示符执行时它成功运行。但我从 Hudson 构建它的挂起也是如此。它没有做任何事情。所以请提供任何建议是否有任何其他方式我们可以处理这个。
我想快速做这件事......紧急任何人的帮助都是可观的
提前致谢。
我是使用 PSEXEC 的 Hudson 新手,我在我的计算机中使用 hudson,我想从 hudson 构建在远程计算机上运行批处理文件。我使用 PSEXEC 在远程计算机上运行批处理文件,当我从命令提示符执行时它成功运行。但我从 Hudson 构建它的挂起也是如此。它没有做任何事情。所以请提供任何建议是否有任何其他方式我们可以处理这个。
我想快速做这件事......紧急任何人的帮助都是可观的
提前致谢。
难道psexec
是在等待用户输入?在这种情况下,哈德森将挂起。
Hudson 是否使用您的用户凭据运行?如果不是午餐,则使用 Hudson 正在运行的凭据的命令提示符,看看如果你调用psexec
. 如果 hudson 在本地系统帐户上运行,则无法使用它启动命令提示符。比尝试使用您的凭据运行 Hudson 并查看会发生什么。
顺便说一句,您是否检查过 Hudsons 日志文件(以防万一)?
也许为时已晚,但我想我会把它发布给有同样问题的其他人。
Psexec 在从任何 CI 服务器运行时都存在问题,无论您拥有什么 CI 服务器,它是 Hudson、Teamcity 等)。从构建服务器运行时,Psexec 挂起。它不会对所有命令都挂起,但对于某些命令,psexec 会挂起。问题在于 psexec 如何读取远程运行命令的输出。最终的解决方案是使用 psexec 以外的其他工具。 您可以查看此解决方案的博客。但是如果你需要一个更简单的解决方案,并且你不关心命令的输出,我想出了一个简单的解决方案来抑制 psexec 的输出。您可以编写一个小型 c# 程序来运行 psexec 命令,抑制其输出。
我想我会对此做出回应,因为我在使用 TeamCity 和 psExec 时遇到了同样的问题。因为我认为这实际上是 Java 执行 psexec 的问题,所以它也应该适用于 Hudson 的情况。
虽然我很早就遇到了 accepteula 问题,但您只需要同意一次,它就会设置一个注册表设置。由于 user327759 表示脚本中的 -accepteula 开关将首次覆盖您的基础,并且永远如此。
如果这不能解决您的问题,在我的情况下它没有,您需要添加“-i”命令开关。例如:psexec -i \ServerName "C:\folder\file.bat"
关于这个解决方案的上下文,我已经包括了我的背景故事:
我能够通过 MsBuild 任务、.Net 包装器和直接命令提示符使用来很好地执行这个 PsExec 命令,但是 TeamCity 只会挂起执行。当 Java 调用 psexec exe 时,它似乎期望对标准 in 有一些响应。在远程服务器上,我会看到 psexecsvc 进程启动并在服务控制台中适当地注册,但随后它会停止。在阅读了许多诸如这篇文章之类的帖子之后,并且挣扎的时间比我愿意承认的要长得多,我最终尝试了 -i 选项,尽管在 TeamCity 之外的任何其他执行场景中都不需要这个选项。psexec 文档表明 -i 将“运行程序,以便它与远程系统上指定会话的桌面交互。如果未指定会话,则进程在控制台会话中运行。”
我遇到了同样的问题,PSEXEC 只是挂了。
我找到的解决方案(在拖网 AGES 之后)是将参数-accepteula添加 到调用的 PSEXEC 中。哈德森在那之后不再上吊。
非常令人沮丧。