A PowerShell parancsfájl futtatása az Intézőből rendszergazdai jogosultságokkal

Windows PowerShell szkriptek (kiterjesztés .PS1) alapértelmezés szerint nincs társítva a PowerShell.exe futtatható fájlhoz. A PS1 szkriptfájlra való dupla kattintással megnyílik a notepad.exe tesztszerkesztő ablak. A PS1 fájlt futtathatja a PowerShell-ben az Intéző helyi menüjéből, ha kiválasztja Futtassa a PowerShell használatával. Az ilyen szkript azonban a felhasználói munkamenet részeként fut, rendszergazdai jogok nélkül. Ugyanazon szkriptfájlokhoz .bat, .cmd, van egy külön menüpont Futtatás rendszergazdaként. PowerShell esetén meg kell nyitnia a Power Shell konzolt emelt jogokkal, és meg kell adnia a szkriptfájl teljes elérési útját. Nem túl kényelmes.

Fontolja meg a File Explorer hozzáadását a helyi menübe a * .ps1 kiterjesztésű fájlok esetében - ez egy elem, amely lehetővé teszi a PowerShell parancsfájl futtatását rendszergazdai jogokkal..

  1. Futtassa a beállításjegyzék-szerkesztőt (regedit.exe)
  2. Menj az ághoz HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ shell
  3. Hozzon létre egy alkulcsot runas és menj hozzá
  4. A runas szakaszon hozzon létre egy üres string értéket HasLUAShield (ez a paraméter hozzáadja az UAC ikont a felfedező helyi menüjéhez)
  5. A runas szakaszban hozzon létre egy beágyazott alszakaszt parancs
  6. Paraméterértékként Alapértelmezett a parancs szakaszában adja meg az értéket: powershell.exe "-Command" "if ((Get-ExecutionPolicy) -ne 'AllSigna') Set-ExecutionPolicy -Scope Process Bypass; & '% 1'"
  7. Most, ha bármelyik * .PS1 fájlra rákattint az RMB-re, a helyi menüben kiválaszthatja Futtatás rendszergazdaként

tanács. Ha a szkript gyorsan fut, a felhasználónak csak látnia kell a megjelenő PowerShell ablakot, amely gyorsan eltűnik. És mi van, ha a szkript eredménye a képernyőn marad, hogy a felhasználó megtekinthesse?

Annak megakadályozása érdekében, hogy a PowerShell konzol ablaka bezáródjon a szkript befejezése után, a paramétert hozzá kell adnia a sorhoz -NoExit:

powershell.exe -NoExit "-parancs" ", ha ((Get-ExecutionPolicy) -ne 'AllSigna') Set-ExecutionPolicy -Scope Process Bypass; & '% 1'"