Creating Custom Objects in Powershell

by Nov 1, 2012

If you want to create your own custom objects, for example, to enable your functions to return rich objects, you can always use Select-Object like this:

PS> $newobject = 'dummy' | Select-Object -Property Name, ID, Address

Then, you can fill in the properties and use the object:

PS> $newobject = 'dummy' | Select-Object -Property Name, ID, Address
PS> $newobject.Name = $env:username
PS> $newobject.ID = 12
PS> $newobject
Name                                                     ID Address
----                                                     -- -------
Tobias                                                   12

In PowerShell v2, there has been an alternate way using hash tables and New-Object. This never worked well, though, because a default hash table is not ordered, so your new objects used random positions for the properties.

In PowerShell v3, you can create ordered hash tables and easily cast them to objects. This way, you can create new custom objects and fill them with data in just one line of code:

PS> $newobject = [PSCustomObject][Ordered]@{Name=$env:Username ID=12 Address=$null}

PS> $newobject
Name                                                     ID Address
----                                                     -- -------
Tobias                                                   12

Twitter This Tip! ReTweet this Tip!