在Powershell中设置后,机器级环境变量不可用

时间:2016-04-28 10:13:02

标签: powershell environment-variables powershell-v4.0

以下代码未按预期返回“Y”。它只适用于下一个会话(另一个新窗口)吗?我希望它能立即上市吗?

    [Environment]::SetEnvironmentVariable("X", "Y", "Machine")
    Write-Host $env:X

2 个答案:

答案 0 :(得分:1)

据我所知,进程只加载一次环境变量(在开始时)。但您可以使用以下命令进行更改:

[Environment]::SetEnvironmentVariable("X", "Y", "Process") # for the current session

注意:您可能想要同时设置:

[Environment]::SetEnvironmentVariable("X", "Y", "Machine")
[Environment]::SetEnvironmentVariable("X", "Y", "Process")

答案 1 :(得分:0)

你必须这样做,因为这个过程在启动时获得环境,而不是在运行时(即你必须重新启动shell才能按照你的方式工作):

$ rvm use 2.1.3
$ rvm gemset empty
$ bundle install

还有一种方法可以使用WM_SETTINGCHANGE

将其广播到其他窗口
  

对系统或环境变量进行更改   user,将lParam设置为字符串来广播此消息   “环境”。)

 [Environment]::SetEnvironmentVariable("X", "Y", "Machine")
 $Env:X = "Y"