Spuštění skriptu PowerShell z Průzkumníka s oprávněními správce

Skripty Windows PowerShell (rozšíření .PS1) nejsou ve výchozím nastavení spojeny s spustitelným souborem PowerShell.exe. Poklepáním na soubor skriptu PS1 se otevře okno editoru test.exe. Soubor PS1 můžete spustit v PowerShell z místní nabídky Průzkumníka výběrem Spusťte s PowerShell. Takový skript se však spouští jako součást uživatelské relace bez administrátorských práv. Přestože pro stejné soubory skriptu .bat, .cmd, existuje samostatná položka nabídky Spustit jako správce. V případě PowerShell musíte otevřít konzoli Power Shell se zvýšenými právy a zadat úplnou cestu k souboru skriptu. Není příliš pohodlné.

Zvažte, jak přidat Průzkumník souborů do kontextové nabídky pro soubory s příponou * .ps1, což je položka, která vám umožní spustit skript PowerShell s právy správce.

  1. Spusťte Editor registru (regedit.exe)
  2. Přejít na větev HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ shell
  3. Vytvořte podklíč s názvem runy a jít na to
  4. V části runy vytvořte prázdnou řetězcovou hodnotu s názvem HasLUAShield (tento parametr přidá ikonu UAC do místní nabídky průzkumníka)
  5. V části runy vytvořte vnořenou podsekci příkaz
  6. Jako hodnota parametru Výchozí v části příkazu zadejte hodnotu: powershell.exe "-Command" "if ((Get-ExecutionPolicy) -ne 'AllSigned') Set-ExecutionPolicy -Scope Process Bypass; & '% 1'"
  7. Pokud nyní kliknete na RMB na libovolný soubor * .PS1, můžete v kontextové nabídce vybrat Spustit jako správce

Tip. Pokud skript běží rychle, musí uživatel vidět pouze okno PowerShell, které se objeví a rychle zmizí. A co když by výsledek skriptu měl zůstat na obrazovce pro prohlížení uživatelem?

Chcete-li zabránit zavření okna konzoly PowerShell po dokončení skriptu, musíte do řádku přidat parametr -Noexit:

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