I want to create an object of arbitrary values, sort of like how I can do this in C#
var anon = new { Name = "Ted", Age = 10 };
You create anonymous types by using the new operator together with an object initializer. For more information about object initializers, see Object and Collection Initializers. The following example shows an anonymous type that is initialized with two properties named Amount and Message .
Object expressions You can define them from scratch, inherit from existing classes, or implement interfaces. Instances of anonymous classes are also called anonymous objects because they are defined by an expression, not a name.
Use += to Add Objects to an Array of Objects in PowerShell Every time you use it, it duplicates and creates a new array. You can use the += to add objects to an array of objects in PowerShell.
You can do any of the following, in order of easiest usage:
Use Vanilla Hashtable with PowerShell 5+
In PS5, a vanilla hash table will work for most use cases
$o = @{ Name = "Ted"; Age = 10 }
Convert Hashtable to PSCustomObject
If you don't have a strong preference, just use this where vanilla hash tables won't work:
$o = [pscustomobject]@{ Name = "Ted"; Age = 10 }
Using Select-Object
cmdlet
$o = Select-Object @{n='Name';e={'Ted'}}, @{n='Age';e={10}} ` -InputObject ''
Using New-Object
and Add-Member
$o = New-Object -TypeName psobject $o | Add-Member -MemberType NoteProperty -Name Name -Value 'Ted' $o | Add-Member -MemberType NoteProperty -Name Age -Value 10
Using New-Object
and hashtables
$properties = @{ Name = "Ted"; Age = 10 } $o = New-Object psobject -Property $properties;
Hashtables are just dictionaries containing keys
and values
, meaning you might not get the expected results from other PS functions that look for objects
and properties
:
$o = @{ Name="Ted"; Age= 10; } $o | Select -Property *
hashtables
PSCustomObject
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With