Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 对列表使用for循环,并将元素设置为环境变量,然后获取值_Powershell_For Loop - Fatal编程技术网

Powershell 对列表使用for循环,并将元素设置为环境变量,然后获取值

Powershell 对列表使用for循环,并将元素设置为环境变量,然后获取值,powershell,for-loop,Powershell,For Loop,我对powershell一点也不熟悉,只在几个命令中需要它。我希望有人能帮助我。我有一个名为optionConfig.json的json文件,其内容如下: { "test1": ["options_size", "options_connection", "options_object"], "test2":["options_customArgs", "options_noUDP", "options_noName"] } 在我的powershell文件中,到目前为止我只有一行代码,这就是

我对powershell一点也不熟悉,只在几个命令中需要它。我希望有人能帮助我。我有一个名为
optionConfig.json
的json文件,其内容如下:

{
"test1": ["options_size", "options_connection", "options_object"],

"test2":["options_customArgs", "options_noUDP", "options_noName"]
}
在我的powershell文件中,到目前为止我只有一行代码,这就是获取json文件的内容

$rawData=Get Content-Raw-Path“optionConfig.json”| ConvertFrom json

我计划在我的系统上有一个名为
test
的环境变量,其值为
test1
test2
,从中,我将查看json文件中关联值中的列表元素。对于列表中的这些元素,我假设它们也是环境变量,我希望得到它们的值。(python中的列表理解在这里是完美的)。我是一个python爱好者,所以我不太确定如何在powershell中显示这一点,但我说我做了
env=getEnvironmentVariable(test)
,这等于
test1
。然后我会在$rawData.env中对I说类似于

返回getEnvironmentVariable(i)

我非常想要另一个列表或新的json对象,其中包含我们从原始json对象获得的假定环境变量的值

有没有一种方法可以在powershell中实现?如果有人能帮忙的话,那会很有帮助的。如果我有什么不清楚的地方,我道歉。谢谢

(编辑)我发现
$rawData.Get-ChildItem Env:test
不起作用。为了从json文件中获得正确的列表,是否有人编写类似的内容


另外,设置一个新变量,如so
$var1=Get ChildItem Env.tool
和doing
$rawData.$test.value
也没有效果。

我看不出有问题,只需设置并使用
$Env:test

$rawdata = Get-Content .\optionsconfig.json | convertfrom-json
$Env:Test="test1"
$rawdata.$ENV:Test

$Env:Test="test2"
$rawdata.$ENV:Test
样本输出

options_size
options_connection
options_object

options_customArgs
options_noUDP
options_noName
上面生成了一个
[System.Collections.DictionaryEntry]
实例数组,每个实例表示一个环境变量的名称和值:

Name                           Value
----                           -----
options_connection             conn1
options_object                 obj1
options_size                   size1

要将上述内容转换为JSON,请执行以下操作:

Get-Item -Path env:* -Include $configObj.$env:test |
  Select-Object Name, Value | ConvertTo-Json
注意:看似冗余的
Select Object
调用对于去除PowerShell在幕后添加的其他属性是必要的,否则这些属性将显示在生成的JSON中。
如果要重命名生成的JSON中的属性,无论如何都需要使用
Select Object

这将产生:

[
  {
    "Name": "options_connection",
    "Value": "conn1"
  },
  {
    "Name": "options_object",
    "Value": "obj1"
  },
  {
    "Name": "options_size",
    "Value": "size1"
  }
]

谢谢。这显然有助于找到这些价值观。我不知道$ENV。
[
  {
    "Name": "options_connection",
    "Value": "conn1"
  },
  {
    "Name": "options_object",
    "Value": "obj1"
  },
  {
    "Name": "options_size",
    "Value": "size1"
  }
]