PowerShell 环境变量设置:临时赋值、永久写入与路径追加

临时设置(当前会话有效)

$env:ADMIN_PASSWORD = "your-password"

关闭终端后失效。读取:

echo $env:ADMIN_PASSWORD
# 或
Write-Host $env:ADMIN_PASSWORD

永久设置(当前用户)

[System.Environment]::SetEnvironmentVariable("ADMIN_PASSWORD", "your-password", "User")

写入注册表 HKCU\Environment,重新打开终端生效,不影响其他用户。

永久设置(系统级,需管理员权限)

[System.Environment]::SetEnvironmentVariable("ADMIN_PASSWORD", "your-password", "Machine")

写入 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment,所有用户生效。

读取已保存的环境变量

# 读取用户级别
[System.Environment]::GetEnvironmentVariable("ADMIN_PASSWORD", "User")

# 读取机器级别
[System.Environment]::GetEnvironmentVariable("ADMIN_PASSWORD", "Machine")

删除环境变量

# 删除用户级别
[System.Environment]::SetEnvironmentVariable("ADMIN_PASSWORD", $null, "User")

追加 PATH(避免覆盖)

$current = [System.Environment]::GetEnvironmentVariable("PATH", "User")
[System.Environment]::SetEnvironmentVariable("PATH", "$current;D:\my-tools", "User")

不要直接给 PATH 赋值,否则会覆盖已有路径。

当前会话立即生效

SetEnvironmentVariable 修改的是注册表,当前会话的 $env: 不会自动更新。如果需要立即生效,手动同步一次:

$env:ADMIN_PASSWORD = [System.Environment]::GetEnvironmentVariable("ADMIN_PASSWORD", "User")

查看所有环境变量

Get-ChildItem Env: