powershell循环并将内容存储到变量

时间:2017-11-03 13:28:59

标签: arrays powershell variables

所以我需要我的脚本循环遍历一个数组并将内容存储在其他变量中,所以我可以稍后操作它。

foreach ($element in $machinesNames){
Get-BrokerMachine -MachineName $element | select LoadIndex -expand LoadIndex
}

输出:

2845
5750
5875
5944
5873
5828
5205
6302
5025
5655
6311
5626
5491
5621

如何将上述结果存储在数组中?

谢谢!

4 个答案:

答案 0 :(得分:6)

您可以将循环结构的输出直接分配给变量:

$result = foreach($element in $machinesNames){
    Get-BrokerMachine -MachineName $element | select LoadIndex -expand LoadIndex
}

如果要确保总是以数组结束,请将表达式包装在数组子表达式运算符@()中:

$result = @(foreach($element in $machinesNames){
    Get-BrokerMachine -MachineName $element | select LoadIndex -expand LoadIndex
})

答案 1 :(得分:2)

您可以通过设置Closure来初始化数组,然后在您的foreach循环中将查询内容添加到myvar。您的代码将如下所示:

$myvar = @()

答案 2 :(得分:1)

您可以初始化并添加到循环中的arraylist,例如:

$ArrList = [System.Collections.ArrayList]@()

$ArrList.Add(Get-BrokerMachine -MachineName $element | select LoadIndex -expand LoadIndex)

然后将它返回任何地方..

答案 3 :(得分:1)

您还可以使用ForEach-Object累积列表:

$results = $machineNames | ForEach-Object { Get-BrokerMachine -MachineName $_ | Select-Object -ExpandProperty LoadIndex }

如果有一个输出,它将是一个单独的元素;否则它将是一个集合。如果你想确保它是一个集合:

$results = @($machineNames | ForEach-Object { Get-BrokerMachine -MachineName $_ | Select-Object -ExpandProperty LoadIndex })

我倾向于喜欢这个解决方案,因为它只是一个赋值语句。