加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何从注册表更新Windows PowerShell会话环境变量

发布时间:2020-12-13 20:54:52 所属栏目:Windows 来源:网络整理
导读:这可能是一个简单的问题,但我找不到正确的答案。如何在当前的Windows PowerShell会话中更新环境变量,而不关闭当前的Windows PowerShell会话?到现在为止,当我说,从控制面板修改PATH env var系统,我必须关闭当前会话并打开一个新的会话,这样变量被刷新
这可能是一个简单的问题,但我找不到正确的答案。如何在当前的Windows PowerShell会话中更新环境变量,而不关闭当前的Windows PowerShell会话?到现在为止,当我说,从控制面板>修改PATH env var系统,我必须关闭当前会话并打开一个新的会话,这样变量被刷新,或发出一个SetEnviromentVariable这是麻烦的….

我来自linux世界,所以我正在寻找类似source命令的东西…

环境在流程启动时被填充,这就是为什么您需要重新启动该过程。

您可以通过从注册表读取来更新环境。也许有如下脚本:

function Update-Environment {
    $locations = 'HKLM:SYSTEMCurrentControlSetControlSession ManagerEnvironment','HKCU:Environment'

    $locations | ForEach-Object {
        $k = Get-Item $_
        $k.GetValueNames() | ForEach-Object {
            $name  = $_
            $value = $k.GetValue($_)

            if ($userLocation -and $name -ieq 'PATH') {
                Env:Path += ";$value"
            } else {
                Set-Item -Path Env:$name -Value $value
            }
        }

        $userLocation = $true
    }
}

(另)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读