通过Jenkins使用psexec运行远程批处理文件失败

13

使用psexec通过Jenkins运行远程批处理文件失败。直接从从机上使用psexec运行相同的批处理文件可以正常工作。

让我提供更多信息。Jenkins及其从机与目标计算机位于不同的域中。

当我像这样运行批处理文件时:

"D:\Temp\PsTools\PsExec.exe" \\<targetmachine> -u <targetdomain\targetdomainuser> -p <pwd> -accepteula  "d:\temp\remotescript.bat" arg1 arg2

直接从被控制的机器(远程桌面占用机器并打开命令提示符)运行,这个方法完美地运作。
当在Jenkins的Windows批处理构建步骤中输入时,没有可见的输出,只有旋转图标,而且不再发生任何事情,构建挂起并排队等待其他构建,造成了大量的积压。显然,我得到了一个失败的审计报告,我的Jenkins用户试图登录目标机器,但是我指定了一个具有目标机器域管理员权限的域用户(目标机器所属域的域用户)。
是否有人知道为什么用户尝试使用提供的凭据以外的任何其他凭据进行登录,以及为什么直接从Jenkins-slave运行此操作可以正常工作?
或者,欢迎提供任何其他方法来实现这一点(在远程机器上运行批处理文件)。
4个回答

7
PAExec是PSExec的功能克隆版本,可以通过Jenkins等工具查看输出结果http://www.poweradmin.com/paexec/ 我们在惠普使用的是XCmd,但由于某些原因,它在我目前的工作中无法使用。
我不知道PAExec何时出现,但它似乎是一个理想的解决方案。在发现它后(就在今天),我成功解决了一个非常复杂的Jenkins部署流程中的间歇性问题。

2
Paul,非常感谢您!我遇到过同样的问题,通过Jenkins调用psexec只返回了80个字符到stdout。 PAExec完美地解决了这个问题。我在Jenkins输出中看到了所有的stdout! - akozin
1
@Guillaume~ 感谢您发布这个问题!三年后发现它非常有用。 Paul 和 akozin 谢谢,我已经试了两个星期!我不知道该如何感谢你们。 - Hunterr
1
Paul,非常感谢你...我尝试了这么多天,但是有了你的答案,我只用了2分钟就完成了...救了我的命..:D - Stack_IQ

6

本地主机不是问题。由于虚假病毒警报,我在获取xCmd文件时遇到了一些麻烦,但最终成功运行了它。现在我需要调查一个小错误,可能是由于传递参数的问题。 - Guillaume Schuermans
2
当连接到64位服务器时,我在xCmd上遇到了一些问题:“无法启动远程服务 错误:2 - 系统找不到指定的文件。” 解决方法是将xCmdSvc.exe从C:\ Windows \ System32复制到C:\ Windows \ SysWOW64。 - Der_Meister

3

试试这个,这会有效。

"D:\Temp\PsTools\PsExec.exe" \\\\remoteMachine -u username -p password /accepteula -h cmd /c "C:\remotescript.bat"

-1

尝试几件事情...

  1. 在命令中accepteula后添加参数选项0,应该可以杀死任何挂起的现有psexec进程并开始处理您的psexec

  2. 验证机器是32位还是64位...
    对于64位,psexec在C:\ Windows \ system32中搜索
    对于32位,psexec在C:\ Windows \ SysWOW64中搜索

在Jenkins任务中,您可以相应地将msbuild版本设置为64位或32位,然后它应该按预期工作。


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