在PowerShell中重新加载path

如果我有一个运行Powershell ISE的实例,并且我安装了一些修改PATH的东西,或者我在Powershell以外的任何地方修改它,那么我需要重新启动Powershell才能看到更新的PATHvariables。

有没有办法重新加载从Powershell内的path,而不重新启动它?

只是为了让Rob的评论变得轻松:

$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User") 

尝试获取机器path并将其分配给会话的path。

 $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") 

如果您的path包含在会话开始时未定义的环境variables,则还需要展开这些variables

 $env:Path = [System.Environment]::ExpandEnvironmentVariables([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")) 

对我来说,在安装定义NVM_HOME%并将NVM_HOME%添加到path中的NVM之后,这很有用

为了达到它的逻辑结论,你可以使用这个recursion函数来扩展

 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这个解决scheme