Когда я щелкаю правой кнопкой мыши по папке или пробелу внутри папки, я хочу иметь пункт меню, который запускает 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 }
Это обходной путь. Мне все еще интересно знать, как загрузить профиль, не внося рискованные изменения в безопасность ОС.