Advanced Windows PowerShell Scripting Video Training

Advanced Windows PowerShell Scripting Video Training
Advanced Windows PowerShell Scripting Video Training

Friday, January 27, 2012

How to get the members of a array, and not the members of the objects in the array in PowerShell

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:

TypeName: System.Int32


 
































Name MemberType Definition
CompareTo Method int …
Equals Method bool …
GetHashCodeMethod int …
GetTypeMethod type GetType …
GetTypeCodeMethod System.TypeCode GetTypeCode() …
ToStringMethod string …


 


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.


 



Name              MemberType
----              ----------
Count          AliasProperty
Address               Method
Clone                 Method
CopyTo                Method
Equals                Method
Get                   Method
GetEnumerator         Method
GetHashCode           Method
GetLength             Method
GetLongLength         Method
GetLowerBound         Method
GetType               Method
GetUpperBound         Method
GetValue              Method
Initialize            Method
Set                   Method
SetValue              Method
ToString              Method
IsFixedSize         Property
IsReadOnly          Property
IsSynchronized      Property
Length              Property
LongLength          Property
Rank                Property
SyncRoot            Property


 


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.


-InputObject <psobject>
    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.


 


 




No comments: