История PowerShell для перезагрузки определенных профилем скрипта функций - PullRequest
0 голосов
/ 29 апреля 2020

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

...