Если ваш путь содержит переменные среды, которые не были определены в начале сеанса, вы также захотите расширить их:
$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"))
Я открыл проблему, чтобы добавить это решение refreshenv
из Chocolatey.
refreshenv
. Это в основном запускает более подробную версию комментария Роба.