【问题标题】:Refresh $env:path in Powershell?在 Powershell 中刷新 $env:path?
【发布时间】:2010-11-30 18:08:54
【问题描述】:

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

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

【问题讨论】:

    标签: powershell environment-variables


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 不,这就是我要找的。 [System.Environment]::GetEnvironmentVariable("PATH", "Machine") 让我获得了路径的当前设置,无论我的脚本是从哪个应用程序运行的或该应用程序何时打开。感谢您的帮助。
    • 非常乐于助人的家伙。我试图编写安装 mercurial 的脚本,然后立即克隆一个存储库,这对我有用。
    猜你喜欢
    • 2016-04-29
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    相关资源
    最近更新 更多