我正在使用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 5 上,要在当前 shell 中动态设置环境变量,我使用 Set-Item:
>$VarName="hello"
>Set-Item "env:$VarName" world
一旦设置了变量,您就可以像这样获取它的值:
>$env:hello
world
当然,为了保留变量,我使用 C#
[Environment]::SetEnvironmentVariable("$VarName", "world", "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