刷新$ env:Powershell中的路径?

Eri*_*c W 12 powershell environment-variables

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

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

Kei*_*ill 7

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

[System.Environment]::SetEnvironmentVariable(string name, string value, EnvironmentVariableTarget target) 
Run Code Online (Sandbox Code Playgroud)

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

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

  • 不,这就是我要找的东西.[System.Environment] :: GetEnvironmentVariable("PATH","Machine")让我得到了路径的当前设置,无论我的脚本是从哪个应用程序运行,或者是什么时候打开该应用程序.谢谢您的帮助. (5认同)