Let’s start off by explaining the situation by creating an array.
$myArray = 1, 2, 3, 4
If I execute $myArray | Get-Member
I get the member information for the integer objects in the array:
|GetType||Method||type GetType …|
|GetTypeCode||Method||System.TypeCode GetTypeCode() …|
However, If I execute $MyArray.count, I get a value of 4. Where did this count property come from? By looking at the members above, the count property is not listed. The Count property can from the object of the array, not the objects contained in the array. To see the members of the object array, type:
Get-Member -InputObject $MyArray
This will give you the members of the object of $MyArray. Below is a listing of what you will receive.
You can see that there is an aliased property called Count. It is a alias for the Length property. Below is an excerpt from the Get-Member help file.
Specifies the object whose members are retrieved.
Using the InputObject parameter is not the same as piping an object to Get-Member. The differences are as follows:
-- When you pipe a collection of objects to Get-Member, Get-Member gets the members of the individual objects in the collection, such as the properties of the integers in an array of integers.
-- When you use InputObject to submit a collection of objects, Get-Member gets the members of the collection, such as the properties of the array in an array of integers.