Ako ga trebate pokrenuti s povlasticama administratora za pokretanje skripte PowerShell, možete provjeriti trenutni postupak za administrativne povlastice izravno u PS kodu.
Sljedeći PowerShell kôd može se koristiti za provjeru radi li se trenutna skripta u načinu rada "Pokreni kao administrator" ili ne:
Host pisanja "Provjera administrativnih prava ..."
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity] :: GetCurrent ()). IsInRole ('
[Security.Principal.WindowsBuiltInRole] "Administrator"))
Upozorenje za pisanje "Nedovoljno dopuštenja za pokretanje ove skripte. Otvorite PowerShell konzolu s povlasticama administratora i ponovo pokrenite skriptu."
pauza
drugo
Host pisanja "Postoje administratorska prava - nastavite skriptu ..." -ForegroundColor Green
Spremite PowerShell kôd u datoteku check_perms.ps1 i pokrenite ga u konzoli bez administrativnih prava:
C: \ PS \ check_perms.ps1
Kao što vidite, pojavio se natpis da nema prava administratora, pa je PowerShell skripta prestala raditi.
Pokrenite ovu skriptu sada u povišenoj sesiji PowerShell-a. Kao što vidite, skripta je utvrdila da se ova PowerShell sesija izvodi s povlasticama administratora.
Skripte programa PowerShell s povlasticama administratora možete pokrenuti izravno iz Windows Explorera.Možete i zatražiti povećanje povlastica izravno iz PowerShell skripte, za to umjesto retka:
Upozorenje pisanja "Nema dovoljno prava"
Upotrijebite kôd
Start-Process Powershell -ArgumentList $ PSCommandPath -Verb RunAs
Kada pokrenete skriptu bez privilegija administratora, ova se skripta ponovno pokreće u novoj privilegiranoj sesiji PowerShell i pojavit će se UAC zahtjev za povećanje privilegija..
Ako omogućite eskalaciju privilegija, vaša PS1 skripta pokrenut će se s administratorskim pravima (put do trenutne datoteke skripte PowerShell prolazi kroz varijablu okruženja $ PSCommandPath).
U PowerShellu 4.0 i novijim verzijama, još je lakše provjeriti administrativne povlastice. Da biste to učinili, upotrijebite direktivu -RunAsAdministrator.
#requires -verzija 4.0
#requires -RunAsAdministrator
Host pisanja "PowerShell je započeo kao administrator" -ForegroundColor Green
Ako se skripta ne pokrene pod administratorom, pojavit će se pogreška:
Skripta 'check_perms.ps1' ne može se pokrenuti jer sadrži izjavu "#requires" za pokretanje kao Administrator. Trenutačna sesija sustava Windows PowerShell ne radi kao Administrator. Pokrenite Windows PowerShell korištenjem opcije Run as Administrator i pokušajte ponovo pokrenuti skriptu.Na redu: 1 znak: 1
+ C: \ PS \ check_perms.ps1
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: PermissionDenied: (check_perms.ps1: String) [], ScriptRequiresException
+ FullyQualifiedErrorId: ScriptRequiresElevation
Ako pokrenete ovu skriptu na računalu sa PowerShell v2, pojavljuje se pogreška:
Izjava "#requires" se ne može obraditi u retku 2 jer nije u ispravnom formatu.Izjava "#requires" mora biti u jednom od sljedećih formata:
"#Requires -shellid"
"# Zahtijeva -verzija"
"# Zahtijeva -pssnapin [-verzija]"
Za upravljanje Active Directoryom, možda će vam trebati drugi zadatak: iz skripte PowerShell, morate provjeriti ima li trenutni korisnik prava administratora domene. Koristite sljedeći kod:
If (([[Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity] :: GetCurrent ()). IsInRole ("Administrator domena"))
# korisnik koji je pokrenuo skriptu ima prava na domene administratora
drugo
# no rights Administrator domena