2017-06-22 37 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其內部具有每個多個列表,其姓名,身份證,住址等

但它只能打印第一個,我只獲得第一個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

不,不工作,一般情況下它不有所作爲要麼。同樣每個對象的值都填充了數據,沒有任何數據是空的或空的,這就是爲什麼這麼令人費解的原因 – AdilZ

+0

你正在返回0 –

+0

@ A.Zia對不起,我更新了答案(我相信這是解決方案) –

4

你正在用奇怪的方式解析你的對象。你爲什麼不用管道讓自己更容易一點?

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

一切都將被投入到成功/輸出管道這樣的,可以被捕獲(例如,如果你把$var =表達之前)

+0

,因爲解析的ACTUAL $ objectarray是MASSIVE,有很多許多事情需要解析。 ...和管道有內存優化問題...非常感謝您的建議,雖然 – AdilZ

+1

而不是'$ ObjectArray | %'你可以使用'ForEach($ ObjectArray中的$ o)'。 – TheIncorrigible1