Created
September 12, 2016 17:20
-
-
Save ploegert/18984168995876cad0ce3d2e25b2ba47 to your computer and use it in GitHub Desktop.
Powershell Run as Admin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Get the ID and security principal of the current user account | |
$myWindowsID = [System.Security.Principal.WindowsIdentity]::GetCurrent(); | |
$myWindowsPrincipal = New-Object System.Security.Principal.WindowsPrincipal($myWindowsID); | |
# Get the security principal for the administrator role | |
$adminRole = [System.Security.Principal.WindowsBuiltInRole]::Administrator; | |
# Check to see if we are currently running as an administrator | |
if ($myWindowsPrincipal.IsInRole($adminRole)) | |
{ | |
# We are running as an administrator, so change the title and background colour to indicate this | |
$Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + "(Elevated)"; | |
$Host.UI.RawUI.BackgroundColor = "DarkBlue"; | |
Clear-Host; | |
} | |
else { | |
# We are not running as an administrator, so relaunch as administrator | |
# Create a new process object that starts PowerShell | |
$newProcess = New-Object System.Diagnostics.ProcessStartInfo "PowerShell"; | |
# Specify the current script path and name as a parameter with added scope and support for scripts with spaces in it's path | |
$newProcess.Arguments = "& '" + $script:MyInvocation.MyCommand.Path + "'" | |
# Indicate that the process should be elevated | |
$newProcess.Verb = "runas"; | |
# Start the new process | |
[System.Diagnostics.Process]::Start($newProcess); | |
# Exit from the current, unelevated, process | |
Exit; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment