Wie kann ich in meinen Skripten feststellen, ob PowerShell mit Administratorrechten ausgeführt wird?
Ich muss wissen, weil ich versuche, ein Programm auszuführen, das die Fähigkeit erfordert, geschützte Ports zu öffnen.
powershell
Boomerang
quelle
quelle
Antworten:
Aufteilen, was dies bewirkt:
[bool]
- Wirf das Endergebnis auf abool
.[System.Security.Principal.WindowsIdentity]::GetCurrent()
- Ruft dasWindowsIdentity
für den aktuell ausgeführten Benutzer ab.(...).groups
- Rufen Sie diegroups
Eigenschaft der Identität auf, um herauszufinden, zu welchen Benutzergruppen die Identität gehört.-match "S-1-5-32-544"
Überprüft, obgroups
die bekannte SID der Administratorgruppe enthalten ist. Die Identität enthält sie nur, wenn "Als Administrator ausführen" verwendet wurde.quelle
-match
und zu[Security.Principal.WindowsIdentity]::GetCurrent().Groups -contains 'S-1-5-32-544'
Dadurch wird die aktuelle Windows-Identität abgerufen und True zurückgegeben, wenn die aktuelle Identität die Administratorrolle hat (dh mit erhöhten Rechten ausgeführt wird).
quelle
In Powershell 4.0 können Sie verwenden , erfordert am Anfang des Skripts:
Ausgänge:
quelle
return
wenn der Benutzer nicht admin ist :)#Requires -RunAsAdministrator
ist das nützlich: Es verhindert, dass das gesamte Skript ausgeführt wird, wenn Sie nicht über einen erhöhten Status verfügen.