Jeśli ścieżka zawiera zmienne środowiskowe, które nie zostały zdefiniowane na początku sesji, będziemy chcieli, aby rozwinąć te zbyt
$env:Path = [System.Environment]::ExpandEnvironmentVariables([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))
Dla mnie było to przydatne po zainstalowaniu NVM, który definiuje i dodaje% NVM_HOME% do ścieżki
Aby wziąć to do logicznego wniosku, można użyć tej funkcji rekurencyjnej rozszerzyć zamiast
function Expand-EnvironmentVariablesRecursively($unexpanded) {
$previous = ''
$expanded = $unexpanded
while($previous -ne $expanded) {
$previous = $expanded
$expanded = [System.Environment]::ExpandEnvironmentVariables($previous)
}
return $expanded
}
a następnie użyć
$env:Path = Expand-EnvironmentVariablesRecursively([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))
ja już opened an issue dodać ten roztwór do refreshenv
od chocolatey
** Yup. ** [Komentarz Rob'a] (https://stackoverflow.com/questions/17794507/reload-the-path-in- powershell # comment25967553_17794885), w rzeczy samej kołysze Powershell Casbah. –
Powinno być łatwiejsze ... – Dyin
Jeśli używasz chocolatey i jest on załadowany do twojego profilu, jest prostsze polecenie: 'refreshenv'. Zasadniczo działa to w wersji [bardziej rozbudowanej] (https://github.com/chocolatey/choco/blob/stable/src/chocolatey.resources/helpers/functions/Update-SessionEnvironment.ps1) komentarza rob. –