如何动态创建环境变量?

How to dynamically create an environment variable?

我正在使用 powershell 脚本设置一些环境变量--

$env:FACTER_Variable_Name = $Variable_Value

FACTER 用于在人偶脚本中使用这些。

我的问题是 - 变量名和变量值都是动态的,并且是从文本文件中读取的。

我正在尝试使用

$env:FACTER_$Variable_Name = $Variable_Value

但是 $ 不是可接受的语法。当我用双引号将它括起来时,变量值没有被传递。关于如何动态使用它的任何建议。

提前致谢

[Environment]::SetEnvironmentVariable("TestVariable", "Test value.", "User")

此语法允许表达式代替 "TestVariable",并且应该足以创建一个配置文件本地环境变量。第三个参数可以是 "Process",这使得新变量在 Get-ChildItem env: 或 "Machine" 中可见 - 这需要管理权限来设置变量。要检索这样的变量集,请使用 [Environment]::GetEnvironmentVariable("TestVariable", "User")(或匹配范围,如果您选择另一个)。

在纯 PowerShell 中,如下所示:

$Variable_Name = "foo"
$FullVariable_Name = "FACTER_$Variable_Name"
$Variable_Value = "Hello World"
New-Item -Name $FullVariable_Name -value $Variable_Value -ItemType Variable -Path Env:

我正在使用 New-Item cmdlet 添加新变量,只需指定 -itemtype-path

On Powershell 5,在当前shell中动态设置环境变量我使用Set-Item

>$VarName="hello"
>Set-Item "env:$VarName" world
>$env:hello
world
>

当然,为了持久化我使用 C# 的变量 [Environment]::SetEnvironmentVariable("$VarName", "world", "User")