所以我需要我的脚本循环遍历一个数组并将内容存储在其他变量中,所以我可以稍后操作它。
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
如何将上述结果存储在数组中?
谢谢!
答案 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 })
我倾向于喜欢这个解决方案,因为它只是一个赋值语句。