Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell:Foreach不工作?_Powershell_Foreach - Fatal编程技术网

Powershell: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

所以我的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、地址等


但是它只打印第一个,我只得到第一个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 |%