Let me show you.
Here are some arrays:
$Array = @() $Array2 = 1,2 $Array3 = "Thing1","Thing2"
Here is what GM says about these arrays:
PS H:\> $Array | GM GM : No object has been specified to the get-member cmdlet. At line:1 char:10 + $Array | GM + ~~ + CategoryInfo : CloseError: (:) [Get-Member], InvalidOperationException + FullyQualifiedErrorId : NoObjectInGetMember,Microsoft.PowerShell.Commands.GetMemberCommand PS H:\> $Array2 | GM TypeName: System.Int32 Name MemberType Definition ---- ---------- ---------- CompareTo Method int CompareTo(System.Object value), int CompareTo(int value), int … PS H:\> $Array3 | GM TypeName: System.String Name MemberType Definition ---- ---------- ---------- Clone Method System.Object Clone(), System.Object ICloneable.Clone() CompareTo Method int CompareTo(System.Object value), int CompareTo(string strB), int IComparab... …
LIES, ALL LIES!
Here is how you force GM to tell you the truth, we use , . That is right ,, this small period that grew a tail is the truth serum to your filthy lying GM problems.
Let me demonstrate:
PS H:\> ,$Array|GM TypeName: System.Object … PS H:\> ,$Array2|GM TypeName: System.Object … PS H:\> ,$Array3|GM TypeName: System.Object …
Now we can clearly see the true type of the object and the methods that are available to us.
Thanks goes out to Marco Shaw for providing this solution here,
If you open powershell and run get-help about_array, then navigate down to the heading GET THE MEMBERS OF AN ARRAY you will find the following:
GET THE MEMBERS OF AN ARRAY
To get the properties and methods of an array, such as the Length
property and the SetValue method, use the InputObject parameter of the
When you pipe an array to Get-Member, Windows PowerShell sends the items
one at a time and Get-Member returns the type of each item
in the array (ignoring duplicates).
When you use the InputObject parameter, Get-Member returns the
members of the array.
For example, the following command gets the members of the array in the
Get-Member -InputObject $a
You can also get the members of an array by typing a comma (,) before
the value that is piped to the Get-Member cmdlet. The comma makes the
array the second item in an array of arrays. Windows PowerShell pipes
the arrays one at a time and Get-Member returns the members of the array.
,$a | Get-Member
,(1,2,3) | Get-Member
There you have it, the comma forces PowerShell to dynamically create an array of array’s and then get-member gets the type of the arrays within the array thereby giving us the actual properties of the array we are interested in.