在 Powershell 中刷新 $env:path?

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

不,这就是我要找的。 [System.Environment]::GetEnvironmentVariable("PATH", "Machine") 让我获得了路径的当前设置,无论我的脚本是从哪个应用程序运行的或该应用程序何时打开。感谢您的帮助。 非常乐于助人的家伙。我试图编写安装 mercurial 的脚本,然后立即克隆一个存储库,这对我有用。

以上是关于在 Powershell 中刷新 $env:path?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Chocolatey 安装后刷新 PowerShell 会话的环境而无需打开新会话

来自powershell错误的SQL“日志字节刷新/秒”计数器

Excel RefreshAll 使用 powershell 脚本和凭据

Powershell为当前登录用户更改Windows 10上的壁纸

Powershell:在 PowerShell 中重新加载路径

windows 修改环境变量后在 vscode 的终端不生效的解决方法