13

通过 Jenkins运行远程批处理文件psexec失败。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

4 回答 4

7

PAExec 是 PSExec 的功能克隆,让我们通过 Jenkins 等查看输出

http://www.poweradmin.com/paexec/

XCmd 是我们在惠普使用的,但由于某种原因,它不适用于我目前的工作。

我不知道 PAExec 何时出现,但这似乎是一个理想的解决方案。在发现它后不久(今天),我用一个非常长/涉及的 Jenkins 部署管道解决了一个间歇性问题。

于 2015-01-10T19:22:24.523 回答
6

这是 psexec 的一个臭名昭著的问题:

http://forum.sysinternals.com/psexec-always-hangs-when-run-from-java_topic5013.html

通过 PsExec 时程序输出丢失

您可以尝试使用 xCmd: http ://feldkir.ch/xcmd.htm (它不适用于 localhost)

于 2013-02-25T23:29:48.357 回答
3

试试这个,这会奏效

"D:\Temp\PsTools\PsExec.exe" \\\\remoteMachine -u username -p password /accepteula -h cmd /c "C:\remotescript.bat"
于 2014-09-09T10:22:23.677 回答
-1

尝试几件事...

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

  2. 验证机器是 32 位还是 64 位..

    对于 64 位,在 C:\Windows\system32
    中搜索 psexec 对于 32 位,在 C:\Windows\SysWOW64 中搜索 psexec

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

于 2013-10-16T05:04:47.263 回答