2017-11-03 21 views
0

私はスクリプトを使って配列をループし、他の変数にコンテンツを格納する必要があるので、後で操作することができます。powershell変数をループして内容を変数に格納する

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

OUTPUT:

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

がどのように私は、アレイ内の結果の上に保存できますか?

ありがとうございます!

答えて

6

をあなたは出力を割り当てることができますループ構造から直接変数へ:

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

もしあなたがy

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

つの出力がある場合、それは以下となります。

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

時には最も簡単なことが難しいようです: ありがとうございました! – catalin

2

foreachループ内に$myvar = @()を設定して配列を初期化すると、クエリの内容をmyvarに追加できます。あなたのコードは次のようになります。

$myvar = @() 
foreach ($element in $machinesNames){ 
$myvar += Get-BrokerMachine -MachineName $element | select LoadIndex -expand LoadIndex 
} 
return $myvar 
1

あなたが初期化など、あなたのループ内のArrayListに追加することができます。どこにでもそれを返し、その後

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

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

..

1

ます。また、リストを蓄積するForEach-Objectを使用することができます。ouは常に配列の部分式演算子@()に式をラップし、配列で終わります単一の要素である。それ以外の場合はコレクションになります。それがコレクションであることを確認したい場合:

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

これは単一の割り当てステートメントであるため、このソリューションが気に入っています。

関連する問題