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 WindowsIdentitypour l'utilisateur en cours d'exécution.(...).groups- Accédez à la groupspropriété de l'identité pour savoir à quels groupes d'utilisateurs l'identité appartient.-match "S-1-5-32-544"vérifie s'il groupscontient le SID bien connu du groupe Administrateurs, l'identité ne le contiendra que si "exécuter en tant qu'administrateur" a été utilisé.-matchet 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.
returnsi l'utilisateur n'est pas administrateur :)
#Requires -RunAsAdministratorest utile: il empêche le script entier de s'exécuter si vous n'êtes pas élevé.