Bonjour,
Parfois, nous devons disposer des droits Administrateur pour lancé correctement une suite de commande. Il est donc très utile de tester cette condition avant même de continuer l’exécution.
1 2 3 4 5 6 |
function Admin { $Admin = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent()) $Admin.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) } Admin |
Ici ça nous renvoi False si ce n’est pas exécuté en admin et True si c’est Ok.
En 2 lignes pour simplifié, également possible en une :
1 2 3 4 5 6 |
function Admin2 { return ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator") } Admin2 |
Pour récupérer l’utilisateur actuel :
1 2 |
$me = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name Return $me |
Voir les rôles disponibles :
1 |
[System.Enum]::GetValues([System.Security.Principal.WindowsBuiltInRole]) |
Vous pouvez tester également via le SID bien connu du compte Administrateur :
1 |
(new-object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole(([System.Security.Principal.SecurityIdentifier]"S-1-5-32-544")) |