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 };
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 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 }
<br/>
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
}
<br/>
Using Select-Object
cmdlet
$o = Select-Object @{n='Name';e={'Ted'}},
@{n='Age';e={10}} `
-InputObject ''
<br/>
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
<br/>
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 *