【问题标题】:How to set environment variable can access anytime using powershell?如何使用powershell设置环境变量可以随时访问?
【发布时间】:2019-08-18 18:05:36
【问题描述】:

我有这种格式的文本文件 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")

【问题讨论】:

  • 更新的代码现在可以工作了。需要先关闭cmd,再检查环境变量。

标签: powershell command environment-variables


【解决方案1】:

[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

【讨论】:

  • 我更新了代码,是这个意思吗?但它仍然没有达到我的预期@mjsqu
  • 你可能会发现需要重启cmd才能显示环境变量
【解决方案2】:

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

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

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

【讨论】:

  • 我无法用这个解决方案解决这个问题:(
  • @Job - 它与 mjsqu 提供的相同。 [grin] 只需将所需的第三个参数添加到调用中 - User1 你喜欢。
  • 我更新了。但它并没有像我预期的那样工作。我的期望,在我运行powershell script 之后,我转到cmd 并使用这个命令echo %ID% 它会显示12345 @Lee_Dailey
  • @Job 你打开你的cmd了吗?设置环境变量后,您需要关闭并重新打开命令框。否则它不会查看更改。
  • @Job - 正如 Theo 指出的那样,您的 current 环境设置不会随着该技术而改变,只会修改该用户/系统的主节点。
猜你喜欢
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
  • 1970-01-01
  • 2020-09-29
  • 1970-01-01
相关资源
最近更新 更多