Windows PowerShell skripte (proširenje .PS1) po defaultu nisu povezane s izvršnom datotekom PowerShell.exe. Dvoklikom na datoteku skripte PS1 otvara se prozor uređivača notepad.exe. PS1 datoteku u PowerShellu možete pokrenuti iz kontekstnog izbornika Explorer odabirom Pokrenite s PowerShellom. Međutim, takva se skripta pokreće u sklopu korisničke sesije, bez prava administratora. Iako je za iste datoteke skripte .bat, .cmd, postoji zasebna stavka izbornika Pokreni kao administrator. U slučaju PowerShell-a, morate otvoriti Power Shell konzolu s povišenim pravima i odrediti puni put do datoteke skripte. Nije baš ugodno.
Razmislite kako dodati File Explorer u kontekstni izbornik za datoteke s ekstenzijom * .ps1, stavku koja omogućuje pokretanje skripte PowerShell s administrativnim pravima.
- Pokrenite uređivač registra (regedit.exe)
- Idi do podružnice HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ shell
- Izradite potključ po imenu runas i krenite na to
- Unutar odjeljka sa runasom stvorite praznu String Value nazvanu HasLUAShield (ovaj će parametar dodati ikonu UAC u kontekstni izbornik istraživača)
- U odjeljku runas stvorite ugniježđen pododjeljak naredba
- Kao vrijednost parametra zadani odjeljak naredbe, navedite vrijednost:
powershell.exe "-Command" "if ((Get-ExecutionPolicy) -ne 'AllSigned') Set-ExecutionPolicy -Scope Process Bypass; & '% 1'"
- Ako kliknete RMB na bilo kojoj * .PS1 datoteci, u kontekstnom izborniku možete odabrati Pokreni kao administrator
vijeće. Ako se skripta brzo pokrene, korisnik mora vidjeti samo PowerShell prozor koji se pojavljuje i brzo nestaje. A što ako rezultat skripte ostane na zaslonu kako bi ga korisnik pregledao?
Kako biste spriječili da se prozor konzole PowerShell zatvori nakon završetka skripte, morate dodati parametar liniji -NoExit:
powershell.exe -NoExit "-Command" "if ((Get-ExecutionPolicy) -ne 'AllSigned') Set-ExecutionPolicy -Scope Process Bypass; & '% 1'"