Skrypty Windows PowerShell (rozszerzenie .PS1) domyślnie nie są powiązane z plikiem wykonywalnym PowerShell.exe. Dwukrotne kliknięcie pliku skryptu PS1 otwiera okno edytora testów notepad.exe. Możesz uruchomić plik PS1 w PowerShell z menu kontekstowego Eksploratora, wybierając Uruchom z PowerShell. Taki skrypt jest jednak uruchamiany w ramach sesji użytkownika bez uprawnień administratora. Chociaż dla tych samych plików skryptów .bat, .cmd istnieje osobny element menu Uruchom jako administrator. W przypadku programu PowerShell należy otworzyć konsolę Power Shell z podwyższonymi uprawnieniami i podać pełną ścieżkę do pliku skryptu. Niezbyt wygodne.
Zastanów się, jak dodać Eksploratora plików do menu kontekstowego dla plików z rozszerzeniem * .ps1, elementu, który pozwala uruchomić skrypt PowerShell z uprawnieniami administratora.
- Uruchom Edytor rejestru (regedit.exe)
- Idź do oddziału HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ shell
- Utwórz podklucz o nazwie runy i idź do tego
- Wewnątrz sekcji runas utwórz pustą wartość ciągu o nazwie HasLUAShield (ten parametr doda ikonę UAC do menu kontekstowego eksploratora)
- W sekcji runas utwórz zagnieżdżoną podsekcję polecenie
- Jako wartość parametru Domyślnie w sekcji polecenia podaj wartość:
powershell.exe „-Command” „if ((Get-ExecutionPolicy) -ne„ AllSigned ”) Set-ExecutionPolicy -Scope Process Bypass; & '% 1'”
- Teraz, jeśli klikniesz RMB na dowolnym pliku * .PS1, w menu kontekstowym możesz wybrać Uruchom jako administrator
Wskazówka. Jeśli skrypt działa szybko, użytkownik musi tylko zobaczyć okno programu PowerShell, które się pojawi i szybko zniknie. A co, jeśli wynik skryptu powinien pozostać na ekranie do oglądania przez użytkownika?
Aby zapobiec zamknięciu okna konsoli PowerShell po zakończeniu skryptu, musisz dodać parametr do wiersza -Noexit:
powershell.exe -NieExit „-Command” „if ((Get-ExecutionPolicy) -ne 'AllSigned') Set-ExecutionPolicy -Scope Process Bypass; & '% 1'”