Я справді близький на цьому. В основному, я хочу створити запис контекстного меню для файлів .ps1, які виконують сценарій як адміністратор, не виходячи з вікна консолі після запуску. Тож я можу створити ключ:
Computer\HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.ps1\shell\RunasAdministratorNoExit
зі значеннями:
і все це чудово і безглуздо, щоб створити запис. Однак, щоб насправді щось зробити , мені потрібно додати ще один ключ, командний ключ:
Computer\HKEY_CURRENT_USER\SOFTWARE\Classes\SystemFileAssociations\.ps1\shell\RunasAdministratorNoExit\command
І в цьому ключі у мене є щось, що майже працює, але не зовсім. Отже, типовим значенням вищевказаного командного ключа є:
Powershell.exe -WindowStyle Hidden -Command "& {Start-Process PowerShell.exe -Verb RunAs -ArgumentList '-NoLogo -NoExit -File """%1"""'}"
Але є одна велика проблема з цим методом; коли сценарій закінчується, він повертає мене до каталогу "C: \ Windows \ system32" замість каталогу самого сценарію. Дивіться моє зображення нижче для уточнення:
Далі, коли я використовую запис контекстного меню, я створив сценарії, що містять рядки, такі як:
$settingsfiles = Get-ChildItem -Recurse $scanPath
Замість того, щоб він повторювався через усі локальні папки до сценарію, який я щойно запустив, він намагається повторити всі папки на "C: \ Windows \ system32!" Очевидно, що це небажано. Тож ось моє запитання:
Що мені потрібно змінити за замовчуванням командного ключа для того, щоб сценарій PowerShell діяв так, ніби він запускався з того самого каталогу, що і сценарій?