44
$result = Get-ADUser -Filter $filter

如果我有 2 个或更多结果,我将 $x 作为数组,但如果我只有一个结果,则将 $x 作为对象。如何使其更正确,始终接收数组 - 空的,一个元素或一些元素?

4

4 回答 4

50

试试 $x = @(get-aduser)

@() 语法强制结果为数组

于 2012-12-29T19:20:42.473 回答
12

顺便说一句,由于他们的评论中所述的原因,这个问题中的其他解决方案并不是最好的方法。更好的方法是在函数前加一个逗号,比如

$result = ,(Get-ADUser -Filter $filter)

这会将一个空结果放入一个空数组中,一个 1 元素结果放入一个 1 元素数组中,一个 2+ 元素结果放入一个相等元素的数组中。

于 2020-04-14T08:16:39.653 回答
4

此外,您可以使用$x=[array]get-aduser

于 2012-12-30T03:35:36.473 回答
0

我在循环中使用索引值时遇到了同样的问题。我通过改变来修复它

$PatchGroupData.SCCM_Collection[$i]

@($PatchGroupData.SCCM_Collection)[$i]
于 2018-03-29T17:57:56.307 回答