首页 > 解决方案 > 如何使用powershell设置环境变量可以随时访问?

问题描述

我有这种格式的文本文件12345。我想将该值设置为环境变量,即使 powershell 关闭我也可以访问它。当我想从命令行访问该环境变量时,我的期望是,我只使用这个命令:echo %ID%我会显示12345

$file = Get-Content .\file.txt
$Variable = "ID"
[Environment]::SetEnvironmentVariable("$Variable", "$file")

更新代码

我试过了,但我仍然无法从命令行使用此命令获取环境变量:echo %ID%

$file = Get-Content .\file.txt
$Variable = "ID"

[Environment]::SetEnvironmentVariable("$Variable", "$file",1)
[Environment]::SetEnvironmentVariable("$Variable", "$file","User")

标签: powershellcommandenvironment-variables

解决方案


第三个参数[Environment]::SetEnvironmentVariable允许您选择环境变量目标。默认值为当前进程,因此使用两个参数调用只会使变量可用于当前 PowerShell 会话。

如果您有权限,您可以在机器级别 (2) 启用环境变量,或者:

[Environment]::SetEnvironmentVariable("$Variable", "$file",2)
[Environment]::SetEnvironmentVariable("$Variable", "$file","Machine")

或者,只是用户级别 (1),或者:

[Environment]::SetEnvironmentVariable("$Variable", "$file",1)
[Environment]::SetEnvironmentVariable("$Variable", "$file","User")
  • “机器级别”HKEY_LOCAL_MACHINE在注册表中。
  • “用户级别”是HKEY_CURRENT_USER

https://docs.microsoft.com/en-us/dotnet/api/system.environmentvariabletarget?view=netframework-4.7.2


推荐阅读