Vérifier si un script PowerShell est exécuté en tant qu’administrateur
Créer une fonction PowerShell pour vérifier si un script PowerShell est exécuté en tant qu’administrateur est crucial pour garantir le bon fonctionnement de certaines tâches. Découvrez comment réaliser cette vérification dès le lancement du script.
Le code PowerShell
Dans un premier temps, stockons la liste des permissions de l’utilisateur exécutant le script PowerShell dans la variable “$UserCurrentPrincipal”. Cela nous permettra de déterminer si cet utilisateur est un administrateur local.
Avec la ligne de code suivante :
$UserCurrentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
Nous parcourons ensuite cet objet pour savoir si l’utilisateur dispose du rôle “Administrator” sur la machine locale, en utilisant la méthode “IsInRole”.
$UserIsAdmin = $UserCurrentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
En simplifiant davantage le code, la vérification peut aussi s’effectuer en une seule ligne :
$UserIsAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] “Administrator”)
En créant une fonction nommée “Test-AdminContext” qui retourne la valeur de “$UserIsAdmin”, nous pouvons facilement vérifier si le script est exécuté en tant qu’administrateur.
En cas de non-exécution du script en tant qu’administrateur, un message d’avertissement s’affiche et l’exécution du script est interrompue. Dans le cas contraire, le script continue son exécution.
Une variante consiste à intégrer le test dans la fonction elle-même, simplifiant ainsi l’appel de la fonction.
Conclusion
Cette fonction et le code associé sont essentiels pour s’assurer que les scripts PowerShell nécessitant des privilèges élevés fonctionnent correctement. N’hésitez pas à utiliser ou adapter ce code selon vos besoins pour une exécution en toute sécurité.
Source : www.it-connect.fr