Comment savoir dans mes scripts si PowerShell s'exécute avec des privilèges d'administrateur?
J'ai besoin de savoir parce que j'essaie d'exécuter un programme qui nécessite la possibilité d'ouvrir des ports protégés.
powershell
Boomerang
la source
la source
Réponses:
Briser ce que cela fait:
[bool]
- Jetez le résultat final sur abool
.[System.Security.Principal.WindowsIdentity]::GetCurrent()
- Récupère leWindowsIdentity
pour l'utilisateur en cours d'exécution.(...).groups
- Accédez à lagroups
propriété de l'identité pour savoir à quels groupes d'utilisateurs l'identité appartient.-match "S-1-5-32-544"
vérifie s'ilgroups
contient le SID bien connu du groupe Administrateurs, l'identité ne le contiendra que si "exécuter en tant qu'administrateur" a été utilisé.la source
-match
et de transtyper:[Security.Principal.WindowsIdentity]::GetCurrent().Groups -contains 'S-1-5-32-544'
Cela récupère l'identité Windows actuelle et renvoie True si l'identité actuelle a le rôle Administrateur (c'est-à-dire qu'elle s'exécute avec des droits élevés).
la source
Dans Powershell 4.0, vous pouvez utiliser requiert en haut de votre script:
Les sorties:
la source
return
si l'utilisateur n'est pas administrateur :)#Requires -RunAsAdministrator
est utile: il empêche le script entier de s'exécuter si vous n'êtes pas élevé.