filimonic
filimonic

Reputation: 4634

PowerShell: How can I to force to get a result as an Array instead of Object

$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

Answers (4)

Cédric Rup
Cédric Rup

Reputation: 15928

Try $x = @(get-aduser)

The @() syntax forces the result to be an array

Upvotes: 60

massospondylus
massospondylus

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

Mark Carroll
Mark Carroll

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

Mike Shepard
Mike Shepard

Reputation: 18156

Also, you can use $x=[array]get-aduser

Upvotes: 5

Related Questions