Jestem naprawdę blisko tego. Zasadniczo chcę utworzyć pozycję menu kontekstowego dla plików .ps1, które uruchamiają skrypt jako administrator bez wychodzenia z okna konsoli po uruchomieniu. Więc mogę utworzyć klucz:
Computer\HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.ps1\shell\RunasAdministratorNoExit
z wartościami:
i to wszystko w porządku i elegancko Stwórz wejście. Jednak aby to zrobić robić coś, muszę dodać inny klucz, klawisz polecenia:
Computer\HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.ps1\shell\RunasAdministratorNoExit\command
I w tym kluczu mam coś takiego prawie działa, ale nie do końca. Zatem domyślną wartością powyższego klawisza polecenia jest:
Powershell.exe -WindowStyle Hidden -Command "& {Start-Process PowerShell.exe -Verb RunAs -ArgumentList '-NoLogo -NoExit -File """%1"""'}"
Ale tutaj jest jeden duży problem tą metodą; po zakończeniu skryptu zwraca mnie do katalogu „C: Windows 32” zamiast katalogu samego skryptu. Zobacz moje zdjęcie poniżej w celu wyjaśnienia:
Ponadto, gdy używam wpisu w menu kontekstowym, stworzyłem skrypty zawierające linie takie jak:
$settingsfiles = Get-ChildItem -Recurse $scanPath
Zamiast rekurencyjnie przechodzić przez wszystkie foldery lokalne do skryptu, który właśnie uruchomiłem, próbuje przekierować przez wszystkie foldery w „C: Windows 32!” Oczywiście jest to niepożądane. Oto moje pytanie:
Co muszę zmienić w domyślnej wartości klawisza polecenia, aby skrypt PowerShell działał tak, jakby był uruchamiany z tego samego katalogu co skrypt?
źródło