如何设置使用Powershell可以随时访问的环境变量?

时间:2019-03-28 03:15:19

标签: powershell command environment-variables

我有一个格式为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")

2 个答案:

答案 0 :(得分:2)

[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

答案 1 :(得分:2)

您需要指定目标环境。默认情况下,该静态方法仅为当前进程设置$ Var / value对。您可能需要当前用户使用,因此请使用下面第一个链接中列出的第二种方法,并将目标设置为user。这是文档页面...

Environment.SetEnvironmentVariable方法(系统)| Microsoft文档
https://docs.microsoft.com/en-us/dotnet/api/system.environment.setenvironmentvariable?view=netframework-4.7.2

EnvironmentVariableTarget枚举(系统)| Microsoft文档
https://docs.microsoft.com/en-us/dotnet/api/system.environmentvariabletarget?view=netframework-4.7.2