Jak mogę sprawdzić w moich skryptach, czy PowerShell działa z uprawnieniami administratora?
Muszę wiedzieć, ponieważ próbuję uruchomić program, który wymaga możliwości otwierania chronionych portów.
powershell
Bumerang
źródło
źródło
Odpowiedzi:
Podział na to, co to robi:
[bool]
- Rzuć wynik końcowy na abool
.[System.Security.Principal.WindowsIdentity]::GetCurrent()
- PobieraWindowsIdentity
dla aktualnie uruchomionego użytkownika.(...).groups
- Uzyskaj dostęp dogroups
właściwości tożsamości, aby dowiedzieć się, do jakich grup użytkowników należy tożsamość.-match "S-1-5-32-544"
sprawdza, czygroups
zawiera dobrze znany identyfikator SID grupy Administratorzy, tożsamość będzie go zawierała tylko wtedy, gdy użyto opcji „uruchom jako administrator”.źródło
-match
i rzutowania[Security.Principal.WindowsIdentity]::GetCurrent().Groups -contains 'S-1-5-32-544'
Pobiera bieżącą tożsamość systemu Windows i zwraca wartość True, jeśli bieżąca tożsamość ma rolę administratora (tzn. Działa z podwyższonym poziomem uprawnień).
źródło
W programie Powershell 4.0, którego można używać, wymaga u góry skryptu:
Wyjścia:
źródło
return
jeśli użytkownik nie jest administratorem :)#Requires -RunAsAdministrator
jest przydatny: Zapobiega uruchomieniu całego skryptu, jeśli nie masz uprawnień .