Trčanje skripte PowerShell iz Explorera s povlasticama administratora

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.

  1. Pokrenite uređivač registra (regedit.exe)
  2. Idi do podružnice HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ shell
  3. Izradite potključ po imenu runas i krenite na to
  4. Unutar odjeljka sa runasom stvorite praznu String Value nazvanu HasLUAShield (ovaj će parametar dodati ikonu UAC u kontekstni izbornik istraživača)
  5. U odjeljku runas stvorite ugniježđen pododjeljak naredba
  6. Kao vrijednost parametra zadani odjeljak naredbe, navedite vrijednost: powershell.exe "-Command" "if ((Get-ExecutionPolicy) -ne 'AllSigned') Set-ExecutionPolicy -Scope Process Bypass; & '% 1'"
  7. 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'"