script - Recarga el camino en powershell
sintaxis powershell (4)
Si tengo una instancia de Powershell ISE ejecutándose e instalo algo que modifica la RUTA o la modifico de alguna manera fuera de Powershell, entonces necesito reiniciar Powershell para que vea la variable PATH actualizada.
¿Hay alguna forma de volver a cargar la ruta dentro de Powershell sin reiniciarlo?
Intente obtener la ruta de la máquina y asignarla a la ruta de la sesión.
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine")
Según la respuesta aceptada, aquí hay una función de PowerShell:
function refresh-path {$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")}function refresh-path {$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")}
Entonces simplemente llama a refresh-path
Si su ruta contiene variables de entorno que no se definieron al inicio de la sesión, también querrá expandirlas.
$env:Path = [System.Environment]::ExpandEnvironmentVariables([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))
Para mí, esto fue útil después de instalar NVM, que define y agrega% NVM_HOME% a la ruta
Para llevar esto a su conclusión lógica, puede usar esta función recursiva para expandir en su lugar
function Expand-EnvironmentVariablesRecursively($unexpanded) {
$previous = ''''
$expanded = $unexpanded
while($previous -ne $expanded) {
$previous = $expanded
$expanded = [System.Environment]::ExpandEnvironmentVariables($previous)
}
return $expanded
}
y luego usa
$env:Path = Expand-EnvironmentVariablesRecursively([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))
He abierto un problema para agregar esta solución en refreshenv
de chocolatey
Solo para sacar a la luz el comentario de Rob :
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")