137
votes

I have a batch file called test.bat. I am calling the below instructions in the test.bat file:

start /min powershell.exe %sysdrive%\testScripts\testscript1.ps1

When I run this through the command prompt, my testscript is running successfully. I want to run it as administrator (as if I have created a desktop shortcut and run as administrator. It shouldn't prompt for any username or password).

I have tried adding /elevate and /NOUAC parameters in the above test.bat, but no luck. How do I fix this issue?

I know how to do it manually, but I want this to be executed from the command prompt.

(By Marnix Klooster): ...without using any additional tools, like those suggested in an answer to Super User question How to run program from command line with elevated rights.)

3
This question is OK to ask here and should not be closed as off topic. It's a programming and software development related question. DotNet program and C++ all have ability to iterative with system and other programs by invoke console command or simply through a batch file.Steven Du
This was useful for me: superuser.com/questions/55809/… Sometimes "run as administrator" is expected to mean "run with elevated rights".User
sudo.bat might be useful to someone. pastebin.com/taHp4FzRNiklas R
Should be moved to superuser instead of closed (and also flagged as duplicate of superuser.com/questions/55809/… )Julien Kronegg

3 Answers

94
votes

Try this:

runas.exe /savecred /user:administrator "%sysdrive%\testScripts\testscript1.ps1" 

It saves the password the first time and never asks again. Maybe when you change the administrator password you will be prompted again.

21
votes

See this TechNet article: Runas command documentation

From a command prompt:

C:\> runas /user:<localmachinename>\administrator cmd

Or, if you're connected to a domain:

C:\> runas /user:<DomainName>\<AdministratorAccountName> cmd
7
votes

It looks like psexec -h is the way to do this:

 -h         If the target system is Windows Vista or higher, has the process
            run with the account's elevated token, if available.

Which... doesn't seem to be listed in the online documentation in Sysinternals - PsExec.

But it works on my machine.