PowerShell – Self Elevated script (= exécution automatique en admin)

Bonjour,

Un petit peu de code PowerShell fort intéressant, créé par Benjamin ARMSTRONG trouvé sur le MSDN.

Le but de ce code est de faire en sorte que le script soit automatiquement exécuté en tant qu’administrateur. Ce code lance une nouvelle instance PowerShell en admin.

Très pratique pour éviter d’avoir à lancer une console en admin et d’aller chercher le script pour l’exécuter 😀

# 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 Administrator"
if ($myWindowsPrincipal.IsInRole($adminRole))
   {
   # We are running "as Administrator" - so change the title and background color to indicate this
   $Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + "(Elevated)"
   $Host.UI.RawUI.BackgroundColor = "DarkBlue"
   clear-host
   }
else
   {
   # We are not running "as 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
   $newProcess.Arguments = $myInvocation.MyCommand.Definition;
   
   # 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
   }

J’espère que cette trouvaille vous sera aussi utile qu’à moi 🙂

Laisser un commentaire