$result = Get-ADUser -Filter $filter
If I have 2 or more results, I get $x as array, but if I have only one result, a get $x as object. How to make
I had the same issue using an indexed value in a loop. I fixed it by changing
$PatchGroupData.SCCM_Collection[$i]
to
@($PatchGroupData.SCCM_Collection)[$i]
By the way, the other solutions in this question are not really the best way to do this, for the reasons stated in their comments. A better way is simply to put a comma before the function, like
$result = ,(Get-ADUser -Filter $filter)
That will put an empty result into an empty array, a 1 element result into a 1 element array and a 2+ element result into an array of equal elements.
Also, you can use $x=[array]get-aduser
Try $x = @(get-aduser)
The @() syntax forces the result to be an array