Zagon skripta PowerShell iz Explorerja s skrbniškimi pravicami

Skripti Windows PowerShell (razširitev) .PS1) privzeto niso povezane z izvršljivo datoteko PowerShell.exe. Dvoklik na datoteko skripta PS1 odpre okno urejevalnika testpad notepad.exe. Datoteko PS1 v programu PowerShell lahko zaženete v kontekstnem meniju Explorer, tako da izberete Zaženite s programom PowerShell. Vendar se tak skript zažene kot del uporabniške seje, brez skrbniških pravic. Čeprav za iste datoteke skripta .bat, .cmd, obstaja ločena točka menija Run As administrator. V primeru PowerShell morate odpreti konzolo Power Shell z dvignjenimi pravicami in določiti celotno pot do datoteke skripta. Ni zelo udobno.

Razmislite o tem, kako dodati File Explorer v kontekstni meni za datoteke s pripono * .ps1, ki omogoča zagon skripta PowerShell s skrbniškimi pravicami.

  1. Zaženite urejevalnik registra (regedit.exe)
  2. Pojdi na podružnico HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ shell
  3. Ustvari podključ z imenom runas in pojdi do njega
  4. Znotraj odseka runas ustvarite prazno vrednost String z imenom HasLUAShield (ta parameter bo dodal ikono UAC v kontekstni meni raziskovalca)
  5. V razdelku runas ustvarite ugnezdeno pododdelek ukaz
  6. Kot vrednost parametra Privzeto v razdelku ukaza podajte vrednost: powershell.exe "-Command" "if ((Get-ExecutionPolicy) -ne 'AllSigned') Set-ExecutionPolicy -Scope Process Bypass; '% 1'"
  7. Če v kateri koli datoteki * .PS1 kliknete RMB, lahko v kontekstnem meniju izberete Zaženi kot skrbnik

Namig. Če se skript hitro zažene, mora uporabnik videti samo okno PowerShell, ki se prikaže in hitro izgine. In kaj, če bi moral rezultat skripta ostati na zaslonu za ogled s strani uporabnika?

Če želite preprečiti, da se okno konzole PowerShell po zaključku skripta zapre, morate v vrstico dodati parameter -Noexit:

powershell.exe -NoExit "-Command" "if ((Get-ExecutionPolicy) -ne 'AllSigned') Set-ExecutionPolicy -Scope Process Bypass & '% 1'"