Я хочу иметь возможность внести изменения в мой скрипт профиля powershell [$ profile], а затем перезагрузить этот скрипт, чтобы эти изменения вступили в силу в моем текущем сеансе. Множество обращений к стеку, обсуждающих, как просто перезагрузить скрипт, используя & $profile
или . $profile
, например, Как перезагрузить профиль пользователя из файла скрипта в PowerShell .
Это говорит о том, что я нахожу перезагружает мой профиль, скрипт может успешно обновлять псевдонимы при условии, что я использовал set-alias
против new-alias
, но он не перезагружает обновления, которые я сделал для функций оболочки, например, function myshellfunction { write-output 'hello from shell function' }
.
Я подумал, что возможно хитрость заключается в том, чтобы скрипт $ profile отбрасывал любые определенные функции оболочки непосредственно перед тем, как я создаю их для поддержки случаев перезагрузки, но это не работает. Он просто приводит к удалению функции оболочки.
# excerpt from my $profile script
# remove function before attempting to create it doesn't result in it being recreated
# when `& $profile` or `. $profile` is used to reload profile settings
if (get-childitem function:\ | where-object name -eq 'MyShellFunction') {
remove-item -path function:\MyShellFunction
}
function MyShellFunction { write-output 'hello from my shell function' }
Есть ли способ перезапустить сценарий $ profile и заставить его получать обновления пользовательских функций оболочки, которые вы определили в этом сценарии, вместо необходимости убивать сеанс терминала powershell и воссоздать его?