临时设置(当前会话有效)
$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: