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.
- Spusťte Editor registru (regedit.exe)
- Přejít na větev HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ shell
- Vytvořte podklíč s názvem runy a jít na to
- 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)
- V části runy vytvořte vnořenou podsekci příkaz
- 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'"
- 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'"