Если путь содержит переменные окружения, которые не были определены в начале сессии, вы хотите, чтобы расширить их тоже
$env:Path = [System.Environment]::ExpandEnvironmentVariables([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))
Для меня это было полезно после установки NVM, которое определяет и добавляет% NVM_HOME% к пути
Чтобы принять это к своему логическому завершению, вы можете использовать эту рекурсивную функцию для расширения вместо
function Expand-EnvironmentVariablesRecursively($unexpanded) {
$previous = ''
$expanded = $unexpanded
while($previous -ne $expanded) {
$previous = $expanded
$expanded = [System.Environment]::ExpandEnvironmentVariables($previous)
}
return $expanded
}
, а затем использовать
$env:Path = Expand-EnvironmentVariablesRecursively([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))
Я opened an issue, чтобы добавить этот раствор в refreshenv
с шоколадным
** Yup. ** [Комментарий Роба] (https://stackoverflow.com/questions/17794507/reload-the-path-in- powershell # comment25967553_17794885), скалы Powershell Casbah, действительно. –
Должно быть проще ... – Dyin
Если вы используете шоколадный продукт, и он загружен в ваш профиль, есть более простая команда: 'refreshenv'. Это в основном работает [более сложная версия] (https://github.com/chocolatey/choco/blob/stable/src/chocolatey.resources/helpers/functions/Update-SessionEnvironment.ps1) комментария rob. –