Search code examples
powershellcmdadministrator

run CMD as administrator in PowerShell


I'm trying to execute a command prompt as administrator by using powershell. (like when you press right click on cmd icon and choose run as administrator). what should I add to the following in order to do so?

& cmd.exe /c $VAR

Solution

  • Somewhat obscurely, you must use Start-Process with argument -Verb RunAs in order to launch an elevated process (a process with administrative privileges) in PowerShell:

    # The command to pass to cmd.exe /c
    $var = 'echo hello world & pause'
    
    # Start the process asynchronously, in a new window,
    # as the current user with elevation (administrative rights).
    # Note the need to pass the arguments to cmd.exe as an *array*.
    Start-Process -Verb RunAs cmd.exe -Args '/c', $var
    

    Note:

    • To make the invocation - which invariably executes in a new window - synchronous, add
      -Wait.

    • Unless the process you're calling from is itself already elevated, you'll get an interactive UAC (User Account Control) prompt.

      • While it is possible to configure your system to not require this prompt, doing so is ill-advised for security reasons - see this answer.