Using psexec.exe in jenkins, handle is invalid

删除回忆录丶 提交于 2020-02-02 02:43:09

问题


I am using Jenkins on a Windows7 system. I would like to use it to execute a batch script on a remote Windows system. The batch script will be used to flash a development board and run some tests. I came across psexec.exe. That works well through a command prompt window--I can connect and run the script without any issues, but when I try to have Jenkins do it, I get the following output:

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

The command I am using in both cases is: psexec.exe \\ABCDEFG -u "DOMAIN\username" -p "password" "C:\test.bat"

The user associated with username has administrator privileges on the remote system (ABCDEFG is not the real name of the system).

Can anyone help me figure out why it is not working through Jenkins? Or, is there an easier/better way to execute a batch script on a remote Windows system through Jenkins?


回答1:


Thanks to all your help, especially Technext, I have a solution.

I needed run "services.msc", find "Jenkins", right click on it, and go to "Properties". Once the properties windows appeared, I had to click the "Stop" button to stop Jenkins, open the "Log On" tab, enter in my username and password (the username I used when running through command prompt), and start Jenkins again. That got rid of the "handle is invalid" message in Jenkins.

Update: A better solution was to go onto the system I was using psexec.exe to get onto, go to Control Panel > User Accounts > Give other users access to this computer. Click on "Add..." and type in the username and domain Jenkins uses to run its commands (to find this, open your Jenkins in a browser window, go to Manage Jenkins > System Information and look for USERNAME and USERDOMAIN under Environment Variables). Make sure you give it Administrator rights. Then click ok. Now psexec.exe shouldn't have the "handle is invalid" issue.




回答2:


Sorry, I don't have enough reputation for comments, but is the single \ a typo? Since

The handle is invalid.

probably means that the computer address is invalid. Try

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

Notice the two backslashes to access a locally mapped computer.

otherwise if that does not work i recommend the @ tag

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

where @servername.txt is a textfile containing only the servernames, one per line. The file parameter handles the formatting of \

ex servername.txt

ABCDEFG
COMPUTER2

EDIT: also found after some quick googling that it can be related to windows security.




回答3:


Check out that a simple restart of the remote machine doesn't solve the problem. Also, adding parameters -h and -accepteula may help. Modified command:

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



来源:https://stackoverflow.com/questions/25213606/using-psexec-exe-in-jenkins-handle-is-invalid

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!