2017-06-22 9 views
2

私はforeachループに問題があり、私が間違っていることを理解できません。Powershell:Foreachが動作しない?

次は私のコードの例です:

$objectarray ##(So this variable contains a list of lists ie name + address) ## 

Foreach ($object in $objectarray.name){ 


$objectid = $objectarray.Where({$_.name -eq "$object"}).id 
$objectaddress = $objectarray.Where({$_.name -eq "$object"}).address 

$objectprint = "$objectid" + ": " + "$objectaddress" 

$objectprint 
return 0 

} 

さて問題はある$ objectarrayは、その内部に複数のリストにその名前、IDを持つそれぞれを持って、アドレスなど

それだけでプリント最初の1つしかありません。返り値として最初の0だけが得られます。多くの事実があるにもかかわらず、

答えて

1

私はあなたのforループの中に0を戻していると思います。それをループの外側に置くべきです。

Foreach ($object in $objectarray.name){ 

    $objectid = $objectarray.Where({$_.name -eq "$object"}).id 
    $objectaddress = $objectarray.Where({$_.name -eq "$object"}).address 

    $objectprint = "$objectid" + ": " + "$objectaddress" 

    $objectprint 
} 
return 0 
+0

ハズレを、(あなたが式の前に$var =を置く場合など)は、通常、それはどちらかの違いを作るdoesntのキャプチャすることができます。また、すべてのオブジェクトの値はデータで埋められていますが、空でも空でもありません。理由はこれがあまりにも恥ずかしいからです。 – AdilZ

+0

返信しています0 –

+0

@A.Zia申し訳ありません、私は答えを更新しました(これが解決策だと思います) –

4

奇妙な方法でオブジェクトを解析しています。パイプラインを使って自分でこれを少し楽にしてみませんか?

$ObjectArray | % { "$($_.id): $($_.address)"; 0 } 

すべてが成功/出力パイプラインにこの言い方をされますとdoesntの仕事を

+0

解析されているACTUAL $ objectarrayが解析する多くの多くのもので大規模です。 ...そしてパイプラインにはメモリ最適化の問題があります... – AdilZ

+1

の代わりにあなたのお勧めをありがとうございます '$ ObjectArray | % 'を使用すると、' ForEach($ ObjectArrayで$ o) 'を使用できます。 – TheIncorrigible1

関連する問題