Spustenie skriptu PowerShell z Prieskumníka s oprávneniami správcu

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..

  1. Spustiť Editor databázy Registry (regedit.exe)
  2. Choďte do vetvy HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ shell
  3. Vytvorte podkľúč s názvom runas a choďte na to
  4. V časti runy vytvorte prázdnu reťazcovú hodnotu s názvom HasLUAShield (tento parameter pridá ikonu UAC do kontextovej ponuky prieskumníka)
  5. V časti runy vytvorte vnorenú podsekciu príkaz
  6. Ako hodnota parametra štandardné v časti príkazu zadajte hodnotu: powershell.exe "-Command" "if ((Get-ExecutionPolicy) -ne 'AllSigned') Set-ExecutionPolicy -Scope Process Bypass; & '% 1'"
  7. 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'"