Starting Elevated PowerShell Windows

There are a few commands I have to run from Elevated PowerShell windows (such as suspending Bitlocker prior to patching).  It’s not that hard to right-click on my pinned-to-taskbar PowerShell icon and select “Run as Administrator”, but I wanted to see if I could avoid that.  I can, somewhat.  This throws up the UAC prompt once to create the scheduled task. It creates an icon on your desktop with the name “PSH (Admin)”. Double-click on this, and you’re in an elevated window.

$taskName = "PowerShellRunAsAdmin";

if (!(Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue))
    Start-Process -Verb RunAs -FilePath schtasks.exe -ArgumentList  "/Create /TN $taskName /SC ONCE /TR `"$PSHome\powershell.exe`" /ST 00:00 /SD 01/01/2001 /RL Highest";
} # if (!(Get-ScheduledTask -TaskName $taskName))

if (!(Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue -ErrorVariable errorVariable))
    $message = "($($MyInvocation.MyCommand.Name)) $($errorVariable.Exception.Message -replace '[\r\n]', ' ')";
    Write-Error -ErrorAction SilentlyContinue -Message $message;
    Write-Warning -Message $message;
    break __outOfScript;

} # if (!(Get-ScheduledTask -TaskName $taskName))

$path = "$home\Desktop\PSH (admin).lnk";
if (!(Test-Path -Path $path))
    $shortcut = (New-Object -ComObject WScript.Shell).CreateShortcut($path);
    $shortcut.TargetPath = "schtasks.exe";
    $shortcut.Arguments = "/Run /TN PowerShellRunAsAdmin";
    $shortcut.IconLocation = (Get-Command -Name powershell.exe).Path;

Why use a mix of Get-ScheduledTask and schtasks.exe?  Get-ScheduledTask is much more complex to call to create a task, but schtasks.exe requires we test on $LASTEXITCODE to see if a task is not present.

Comments (0)

Skip to main content