Powershell:Foreach不工作?
所以我的foreach循环有问题,我无法找出我做错了什么 以下是我的代码示例:Powershell:Foreach不工作?,powershell,foreach,Powershell,Foreach,所以我的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 = $objecta
$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、地址等
但是它只打印第一个,我只得到第一个0作为返回值…尽管事实上有许多返回值我想这是因为你在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
您正在以一种奇怪的方式解析对象。你为什么不使用管道来让这对你自己来说容易一点呢
$ObjectArray | % { "$($_.id): $($_.address)"; 0 }
所有内容都将以这种方式放到success/output管道中,并且可以被捕获(例如,如果您在表达式前面加上
$var=
)不,不起作用,通常也没有什么区别。此外,每个对象值都充满了数据,没有一个是空的或null的,这就是为什么返回时会感到如此困惑的原因0@A.Zia抱歉,我更新了答案(我相信这就是解决方案),它捕获了第一个条目的输出,类似于:100:Abc123。。。和一个0作为下一行(这是我要将其馈送到的另一个系统所必需的)。。。但是除了第一个条目之外,没有其他输出是的,但是这个返回会使您跳出所使用的任何函数,从而停止for循环。因为正在解析的实际$objectarray非常庞大,有许多东西需要解析。。。。管道也有内存优化问题…非常感谢您的建议,您可以使用ForEach($ObjectArray中的o)
而不是$ObjectArray |%
。