Dans certains contexte, nous avons besoin qu’un script Powershell ne soit exécuté que si la fenêtre Powershell n’a été lancée qu’en tant qu’administrateur.
Pour effectuer ce contrôle et lancer l’exécution du script :
$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
if (($currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)) -eq $false)
{
write-host "Merci de relancer le script avec élévation de privilèges" -f red -b yellow
}
else
{
############################################### Saisissez votre code
###############################################
}
Maintenant si vous lancez votre script Powershell sans exécuter d’élévation, voici le résultat :
Imaginons maintenant que nous voulons exécuter un script uniquement si le compte utilisé dispose du droit domain admin :
Tout d’abord vous devez identifier le SID du groupe domain admin.
Une fois identifié voici un exemple d’intégration pour appliquer cette condition:
$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
$DroitDomainAdmin=0;$currentUser.Identities.groups | %{if($_.value -eq "S-1-5-21-XXXXXXXXXXXXXXXXXXXX"){$DroitDomainAdmin=1}}
### S-1-5-21-XXXXXXXXXXXXXXXXXXXX correspond à votre SID du groupe domain admin
if ($DroitDomainAdmin -eq "0")
{
write-host "Vous ne disposez pas du jeton Domain\Domain Admins" -f red -b yellow
write-host "Merci de vous l'attribuer et de relancer le script" -f red -b yellow
}
else
{
############################################### Saisissez votre code
###############################################
}