Run batch file as administrator on Jenkins?

41,876

Solution 1

Our solution was to run the Jenkins' service as a separate local admin user. After installing Jenkins, Start => 'services' => Scroll to the Jenkins service => right click => properties => "log on" => "this account" => specify a local admin account.

Hopefully in newer Jenkins' builds it can work as the standard NETWORK SERVICE but for some reason it didn't with our box.

Solution 2

One of the solution:

  1. Create bat file in slave.
  2. Create shortcut of the file and right click the shortcut, properties -> Advanced -> check run as administrator.
  3. Control Panel -> System and Security -> Action Center -> Change User Account Control Settings and set the level to "never notify".
  4. run the file on Jenkins

Somehow the file will be executed on slave server but it return failure on Jenkins.

Solution 3

This is My situation:

I need to use admin privileged console to run pywinauto script (written in python) to automate some app which requires admin privileged.

What I had tried:

  1. In my experience, install Windows Jenkins slave as a service creating more issue to take care with, so I don't go this route.
  2. To create a new process and it will open a new admin privileged shell and run command on it. But, in this way, Jenkins will not show its output, say in Blue Ocean.

What worked for me:

  1. Just manually open an admin privileged console to start the your_window_node.jnlp file and then this Jenkins slave will have admin privileged.
Share:
41,876

Related videos on Youtube

DeepSpace101
Author by

DeepSpace101

Updated on November 22, 2020

Comments

  • DeepSpace101
    DeepSpace101 over 3 years

    We're using Jenkins on Win8 x64 to build (msbuild), package (cspack), run (csrun) and test (nunit) an azure cloud services project. The Azure cloud service emulators need to run as administrator plus we need to bind to ports 80/443 (so can't use "lite" emulators).

    We're doing the above via a simple .bat file that Jenkins runs. Typically no user logs into the machine, it boots up and Jenkin's runs as a service that keeps monitoring our GIT repo and emails on failures. An admin manually logs into the machine just for maintenance (eg. apply patches or reboot machine etc)

    How do we configure Jenkins to run that .bat as administrator without human interaction?

    With a desktop UI we can right click a command prompt, run as admin, acknowledge the UAC prompt, get the elevated privilege prompt and run the .bat file.

  • DeepSpace101
    DeepSpace101 over 9 years
    How do we run the slave agent? New to the setup but we installed it as a service that becomes alive anytime the build server machine comes online. Thanks!
  • kazerm
    kazerm over 9 years
    I don't think it is matter, which user is logged in to the windows machine? I think that if you'll log in as Administrator user - you'll be fine.
  • DeepSpace101
    DeepSpace101 over 9 years
    Typically no user logs into the machine, it boots up and Jenkin's runs as a service that keeps monitoring our GIT repo and emails on failures. An admin logs into the machine just to maintenance (eg. apply patches or reboot machine etc)
  • kazerm
    kazerm over 9 years
  • Peter PitLock
    Peter PitLock almost 7 years
    for interest sake, if your file was update.bat, the shortcut would be update.bat.lnk, which you can then refer to in Jenkins.
  • c4sh
    c4sh about 5 years
    jenkins fails to detect the .lnk as a .bat ... how to solve that?
  • c4sh
    c4sh about 5 years
    "Shomehow the file will be executed on slave server but it return failure on Jenkins" Did you guys find a way to know if the file executed went fine or not?
  • c4sh
    c4sh about 5 years
    Cannot find the option, is that so in Windows 10 ?
  • Gustavo Tufiño Fernández
    Gustavo Tufiño Fernández over 4 years
    It works like a charm. I haved the same issue with my jenkins instance executing a bat command, thanks a lot dude