我是使用 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 中。哈德森在那之后不再上吊。
非常令人沮丧。