PowerShell:如何强制将结果作为Array而不是Object获取

时间:2012-12-29 19:17:30

标签: powershell

$result = Get-ADUser -Filter $filter

如果我有2个或更多结果,我得到$ x作为数组,但如果我只有一个结果,则得到$ x作为对象。如何使它更正确,总是收到数组 - 空,一个元素或一些元素?

4 个答案:

答案 0 :(得分:35)

尝试$ x = @(get-aduser)

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

答案 1 :(得分:5)

顺便说一句,由于其评论中所述的原因,此问题中的其他解决方案并不是真正的最佳解决方案。 更好的方法是简单地在函数前加上逗号,例如

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

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

答案 2 :(得分:4)

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

答案 3 :(得分:-1)

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

来修复它
$PatchGroupData.SCCM_Collection[$i]

@($PatchGroupData.SCCM_Collection)[$i]