Якщо ваш шлях містить змінні середовища, які не були визначені на початку сеансу, ви також хочете розширити їх:
$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.