在jenkins中使用psexec.exe,句柄无效

时间:2014-08-08 23:18:26

标签: batch-file jenkins psexec

我在Windows7系统上使用Jenkins。我想用它来在远程Windows系统上执行批处理脚本。批处理脚本将用于刷新开发板并运行一些测试。我遇到了psexec.exe。这通过命令提示符窗口很好 - 我可以连接并运行脚本没有任何问题,但是当我尝试让Jenkins这样做时,我得到以下输出:

PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

The handle is invalid.
Connecting to ABCDEFG...

Couldn't access ABCDEFG:
Connecting to ABCDEFG...

Build step 'Execute Windows batch command' marked build as failure

我在两种情况下使用的命令是:     psexec.exe \\ ABCDEFG -u“DOMAIN \ username”-p“password”“C:\ test.bat”

与用户名相关联的用户在远程系统上具有管理员权限(ABCDEFG不是系统的真实名称)。

任何人都可以帮我弄明白为什么它不能通过Jenkins工作吗?或者,是否有更简单/更好的方法通过Jenkins在远程Windows系统上执行批处理脚本?

3 个答案:

答案 0 :(得分:5)

感谢您的所有帮助,特别是Technext,我有一个解决方案。

我需要运行" services.msc",找到" Jenkins",右键单击它,然后转到"属性"。一旦属性窗口出现,我不得不点击"停止"按钮停止詹金斯,打开"登录"选项卡,输入我的用户名和密码(通过命令提示符运行时使用的用户名),然后再次启动Jenkins。摆脱"句柄无效"詹金斯的消息。

更新: 一个更好的解决方案是进入我使用psexec.exe进入的系统,进入控制面板>用户帐户>授予其他用户访问此计算机的权限。点击"添加..."并输入Jenkins用于运行其命令的用户名和域(要查找此信息,请在浏览器窗口中打开Jenkins,转到Manage Jenkins>系统信息并在环境变量下查找USERNAME和USERDOMAIN)。确保您授予管理员权限。然后单击确定。现在psexec.exe不应该有"句柄无效"问题。

答案 1 :(得分:0)

抱歉,我没有足够的评论声誉,但是单曲是错字吗?从那以后

  

句柄无效。

可能意味着计算机地址无效。尝试

 psexec.exe \\ABCDEFG -u "DOMAIN\username" -p "password" "C:\test.bat"

注意两个反斜杠以访问本地映射的计算机。

否则如果不起作用,我推荐@ tag

psexec.exe @servername.txt -u "DOMAIN\username" -p "password" "C:\test.bat"

其中@ servername.txt是一个包含服务器名的文本文件,每行一个。 file参数处理\

的格式

ex servername.txt

ABCDEFG
COMPUTER2

编辑:在一些快速谷歌搜索后也发现它可能与windows security有关。

答案 2 :(得分:0)

检查远程机器的简单重启并不能解决问题。此外,添加参数-h和-accepteula可能会有所帮助。修改后的命令:

psexec.exe \\ABCDEFG -u "DOMAIN\username" -p "password" -h -accepteula "C:\test.bat"