Когда я щелкаю правой кнопкой мыши по папке или пробелу внутри папки, я хочу иметь пункт меню, который запускает PowerShell в этом месте, а затем я хочу запустить функцию / псевдоним, которая будет выполнять работу по выравниванию каталога и перезаписывать, если файл с таким именем существует.

Обновление: используя командлет get-help на powershell, мне удалось взломать эту команду, которая выравнивает рабочий каталог и перезаписывает, если файл существует.

gci -r -file | move -force -destination $PWD

Обновление: я добавил "Открыть с помощью PowerShell" в контекстное меню с помощью regedit

[HKEY_CLASSES_ROOT\Directory\Background\shell\Open with PowerShell]

[HKEY_CLASSES_ROOT\Directory\Background\shell\Open with PowerShell\command]
@="powershell.exe -noexit -command Set-Location '%V'"

[HKEY_CLASSES_ROOT\Directory\shell\Open with PowerShell]

[HKEY_CLASSES_ROOT\Directory\shell\Open with PowerShell\command]
@="powershell.exe -noexit -command Set-Location '%V'"

затем добавление function было похоже на многие другие языки:

function flatten { gci -r -file | move -force -destination $PWD }

Но я не могу заставить его автоматически загружаться при открытии powershell. В bash я бы поместил это в .bashrc или .profile и он будет загружен.

Я добавил файл profile.ps1 с function в $pshome , теперь я получаю эту ошибку:

. : File C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1 cannot be loaded because running scripts is disabled
on this system. For more information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:3
+ . 'C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1'
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

Не уверен, что изменение настроек безопасности - единственный способ обойти это.

Как мне разрешить загрузку скрипта / псевдонима максимально безопасно?

Обновить:

Изменение команды на запись ниже в regedit загружает нужную мне функцию:

powershell.exe -noexit -command Set-Location '%V'; function flatten { gci -r -file | move -destination $PWD -force }

Это обходной путь. Мне все еще интересно знать, как загрузить профиль, не внося рискованные изменения в безопасность ОС.

1 ответ1

0

Посмотрите, поможет ли эта реализация подобной функциональности.

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