Odpowiedzi:
[bool](([System.Security.Principal.WindowsIdentity]::GetCurrent()).groups -match "S-1-5-32-544")
Podział na to, co to robi:
[bool]
- Rzuć wynik końcowy na a bool
.[System.Security.Principal.WindowsIdentity]::GetCurrent()
- Pobiera WindowsIdentity
dla aktualnie uruchomionego użytkownika.(...).groups
- Uzyskaj dostęp do groups
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, czy groups
zawiera dobrze znany identyfikator SID grupy Administratorzy, tożsamość będzie go zawierała tylko wtedy, gdy użyto opcji „uruchom jako administrator”.-match
i rzutowania [Security.Principal.WindowsIdentity]::GetCurrent().Groups -contains 'S-1-5-32-544'
([Security.Principal.WindowsPrincipal] `
[Security.Principal.WindowsIdentity]::GetCurrent() `
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
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ń).
W programie Powershell 4.0, którego można używać, wymaga u góry skryptu:
#Requires -RunAsAdministrator
Wyjścia:
Nie można uruchomić skryptu „MyScript.ps1”, ponieważ zawiera on instrukcję „#requires” do działania jako administrator. Bieżąca sesja Windows PowerShell nie działa jako administrator. Uruchom program Windows PowerShell, używając opcji Uruchom jako administrator, a następnie spróbuj ponownie uruchomić skrypt.
return
jeśli użytkownik nie jest administratorem :)
#Requires -RunAsAdministrator
jest przydatny: Zapobiega uruchomieniu całego skryptu, jeśli nie masz uprawnień .