Reputation: 4634
$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 it more correct, to always recieve array - empty, with one element or with some elements?
Upvotes: 54
Views: 31524
Reputation: 15928
Try $x = @(get-aduser)
The @()
syntax forces the result to be an array
Upvotes: 60
Reputation: 199
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.
Upvotes: 19
Reputation: 11
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]
Upvotes: 0