刷新$ env:Powershell中的路径?

时间:2009-09-23 13:11:07

标签: powershell environment-variables

我有一个PowerShell脚本,用于检查某个目录是否在PATH上(通过查看$ env:path)。看起来$ env:path在启动时被每个应用程序加载并本地作用域,并且该作用域被传递给任何子应用程序。所以...如果有人打开Firefox,下载我的程序,运行它,得到一条消息,他们应该改变路径,修复问题,然后再从Firefox下载窗口运行程序,他们会得到相同的消息,除非他们从资源管理器启动我的程序或重新启动Firefox。

有没有办法在我的PowerShell脚本中重新加载$ ​​env:path,这样它就会获得当前值,就好像它是从资源管理器中打开的一样?

1 个答案:

答案 0 :(得分:7)

如果您在浏览器的上下文之外运行,我会告诉您使用

[System.Environment]::SetEnvironmentVariable(string name, string value, EnvironmentVariableTarget target) 

更改用户的Path变量。第三个参数允许您指定Process,User或Machine。如果您指定用户或计算机,则更改是永久性的,并且将显示在之后启动的所有程序的env块中。但是,由于您在浏览器中运行,我认为您无法做到这一点。

如果用户更改了其路径,则该更改将可用于将来的浏览器实例。另一种选择是在路径中测试(Get-Command)您需要的应​​用程序,如果找不到,请在每次运行时自己修改$env:Path。也就是说,除非你不知道路径应该是什么。