Skripty Windows PowerShell (rozšírenie .PS1) nie sú predvolene spojené s spustiteľným súborom PowerShell.exe. Dvojitým kliknutím na súbor skriptu PS1 sa otvorí okno editoru test.exe. Súbor PS1 môžete spustiť v PowerShell z kontextovej ponuky Prieskumníka výberom Spustiť s PowerShell. Takýto skript sa však spúšťa ako súčasť užívateľskej relácie bez administrátorských práv. Aj keď pre rovnaké súbory skriptov .bat, .cmd, existuje samostatná položka ponuky Spustiť ako správca. V prípade PowerShell musíte otvoriť konzolu Power Shell so zvýšenými právami a zadať úplnú cestu k súboru skriptu. Nie príliš pohodlné.
Zvážte, ako pridať File Explorer do kontextovej ponuky pre súbory s príponou * .ps1, čo umožňuje spustiť skript PowerShell s právami správcu..
- Spustiť Editor databázy Registry (regedit.exe)
- Choďte do vetvy HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ shell
- Vytvorte podkľúč s názvom runas a choďte na to
- V časti runy vytvorte prázdnu reťazcovú hodnotu s názvom HasLUAShield (tento parameter pridá ikonu UAC do kontextovej ponuky prieskumníka)
- V časti runy vytvorte vnorenú podsekciu príkaz
- Ako hodnota parametra štandardné v časti príkazu zadajte hodnotu:
powershell.exe "-Command" "if ((Get-ExecutionPolicy) -ne 'AllSigned') Set-ExecutionPolicy -Scope Process Bypass; & '% 1'"
- Ak teraz kliknete na RMB na ľubovoľný súbor * .PS1, môžete v kontextovej ponuke vybrať Spustiť ako správca
rada. Ak skript beží rýchlo, používateľ musí iba zobraziť okno PowerShell, ktoré sa objaví a rýchlo zmizne. A čo keby výsledok skriptu mal zostať na obrazovke, aby ho mohol prehliadať užívateľ?
Aby ste zabránili zatvoreniu okna konzoly PowerShell po dokončení skriptu, musíte do riadku pridať parameter -noexit:
powershell.exe -No Ukončite "-Command" ", ak ((Get-ExecutionPolicy) -ne 'AllSigned') Set-ExecutionPolicy -Scope Process Bypass; & '% 1'"