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

ioekq8ef  于 2022-12-22  发布在  Jenkins
关注(0)|答案(4)|浏览(239)

我在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“域\用户名”-p“密码”“C:\测试. bat”
与username关联的用户具有远程系统的管理员权限(ABCDEFG不是系统的真实的名称)。
有没有人能帮我弄清楚为什么它不能通过Jenkins工作?或者,有没有更容易/更好的方法通过Jenkins在远程Windows系统上执行批处理脚本?

gk7wooem

gk7wooem1#

感谢大家的帮助,尤其是Technext,我有了解决方案。
我需要运行"services. msc",找到"Jenkins",右键单击它,然后转到"属性"。一旦属性窗口出现,我必须单击"停止"按钮停止Jenkins,打开"登录"标签,输入我的用户名和密码(我通过命令提示符运行时使用的用户名),然后再次启动Jenkins。这就摆脱了Jenkins中的"句柄无效"消息。
更新:一个更好的解决方案是进入我使用psexec.exe进入的系统,进入控制面板〉用户帐户〉授予其他用户访问此计算机的权限。单击"添加..."并键入Jenkins用于运行其命令的用户名和域(要找到这个,在浏览器窗口中打开你的Jenkins,进入管理Jenkins〉系统信息并在环境变量下查找USERNAME和USERDOMAIN)。确保您授予它管理员权限。然后单击确定。现在psexec.exe应该不会有"句柄无效"的问题。

6ju8rftf

6ju8rftf2#

抱歉,我没有足够的信誉来发表评论,但是单曲是一个错别字吗?
句柄无效。
可能表示计算机地址无效。请尝试

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

请注意,访问本地Map计算机时需要使用两个反斜杠。
否则,如果这不起作用,我建议使用@标记

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

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

ABCDEFG
COMPUTER2

**编辑:**快速搜索后也发现它可能与windows security有关。

but5z9lq

but5z9lq3#

检查一下,简单地重新启动远程计算机并不能解决问题。另外,添加参数-h和-accepteula可能会有所帮助。修改后的命令:
第一个月

vof42yt1

vof42yt14#

我从Jenkins pipeline groovy脚本执行以下代码,将动态创建的虚拟机连接为Jenkins master上的资源。以下代码将动态创建的虚拟机连接为Jenkins master上的资源,带有4个执行器。您可以根据需要更改执行器的数量。

bat label: 'ConnectResource', script: """
    @echo OFF

    C:\\apps\\tools\\psexec \\\\${machine_ip} -u ${machine_ip}\\${machine_username} -p ${machine_password} -accepteula -d -h -i 1 cmd.exe /c "cd C:\\apps\\jenkins\\ & java -jar C:\\apps\\jenkins\\swarm.jar -master http://pnlv6s540:8080 -username ${jenkins_user_name} -password ${jenkins_user_password} -name ${machine_ip}_${BUILD_NUMBER} -labels ${machine_ip}_${BUILD_NUMBER} -deleteExistingClients -disableClientsUniqueId -executors 4" & ping 127.0.0.1 -n 60 > nul
    """

相关问题