1

Я действительно близок к этому. По сути, я хочу создать пункт контекстного меню для файлов .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 работал так, как если бы он запускался из того же каталога, что и скрипт?

1 ответ1

1

Попробуйте использовать ... Командлет Set-Location или Push-Location, или блок scritpblock…

Скрипт Split-Path $:MyInvocation.МояКоманда.Дорожка

... в вашей последней команде.

Или просто создайте новый ярлык, настроенный так, как вы хотите, и используйте контекстное меню SendTo, не требуя взлома.

Посмотрите эту ветку, демонстрирующую подход SendTo для PowerShell.

Предельные ключи PowerShell принимаются сценарием паузы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .