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.
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.
Réponses:
[bool](([System.Security.Principal.WindowsIdentity]::GetCurrent()).groups -match "S-1-5-32-544")
Briser ce que cela fait:
[bool]
- Jetez le résultat final sur a bool
.[System.Security.Principal.WindowsIdentity]::GetCurrent()
- Récupère le WindowsIdentity
pour l'utilisateur en cours d'exécution.(...).groups
- Accédez à la groups
propriété de l'identité pour savoir à quels groupes d'utilisateurs l'identité appartient.-match "S-1-5-32-544"
vérifie s'il groups
contient le SID bien connu du groupe Administrateurs, l'identité ne le contiendra que si "exécuter en tant qu'administrateur" a été utilisé.-match
et de transtyper:[Security.Principal.WindowsIdentity]::GetCurrent().Groups -contains 'S-1-5-32-544'
([Security.Principal.WindowsPrincipal] `
[Security.Principal.WindowsIdentity]::GetCurrent() `
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
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).
Dans Powershell 4.0, vous pouvez utiliser requiert en haut de votre script:
#Requires -RunAsAdministrator
Les sorties:
Le script 'MyScript.ps1' ne peut pas être exécuté car il contient une instruction "#requires" pour être exécuté en tant qu'administrateur. La session Windows PowerShell actuelle ne s'exécute pas en tant qu'administrateur. Démarrez Windows PowerShell à l'aide de l'option Exécuter en tant qu'administrateur, puis réessayez d'exécuter le script.
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é.