PowerShell: Prüfen, ob Administrator-Rechte vorhanden
Bei Windows Betriebssystemen gibt es Befehle, die ein normaler User ausführen kann. Es gibt aber auch Befehle und Einstellungen, die Administrator-Berechtigungen benötigen. Möchte man einen Benutzer darauf hinweisen, dass erhöhte Rechte benötigt werden, kann man eine Fehlermeldung anzeigen. In einem PowerShell Script kann man somit prüfen, ob für den Benutzer Administrator-Rechte vorhanden sind.
Wie kann überprüft werden, ob Administrator-Berechtigungen vorhanden sind?
Generell ist es nicht so einfach zu überprüfen, welche Rechte dem Benutzer genau zugewiesen sind. Für Admin-Rechte ist es aber ausreichend zu prüfen, ob der Benutzer Mitglied der Gruppe ‘Administrator’ ist. Genau das kann auch in einem PowerShell Script abgefragt werden. Am Besten natürlich zum Start.
Administrator-Rechte prüfen mit PowerShell
Mit PowerShell kann die Methode von oben abgebildet werden. Somit wird überprüft, ob sich der aktuelle Benutzer in der Rolle ‘Administrator’ befindet. Wenn er sich nicht in der Rolle befindet, wird mit dem cmdlet throw
ein Fehler ausgegeben.
if (! ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { throw "Run with administrator rights" }
Startet man nun PowerShell ohne erhöhte Administrator-Rechte, so wird mit diesem Befehl ein Fehler ausgegeben, wie im Bild ersichtlich ist.
Öffnet man die PowerShell ISE, oder die klassische Konsole mit Administrator-Berechtigungen und führt den oben genannten Code aus, so wird kein Fehler ausgegeben.
Wann sollte man zuvor prüfen, ob Administrator-Rechte vorhanden sind?
Vor allem bei PowerShell Skripte, die automatisiert oder im Hintergrund ausgeführt werden, ist es fatal, wenn ein Fehler auftritt. Somit sollte man zuvor alle Fehlerquellen minimieren. Somit sollte man auch prüfen, ob im Script Administrator-Rechte vorhanden sind. Doch wann benötigt man überhaupt erhöhte Rechte?
- Installieren / Deinstallieren von Software für alle Benutzer
- Ändern von systemweiten Einstellungen
- Tiefgreifende Änderungen in der Windows Registry
- …