Как создать анонимный объект в PowerShell?

Я хочу создать объект произвольных значений, вроде того, как я могу это сделать в С#

var anon = new { Name = "Ted", Age = 10 };

Ответ 1

Попробуйте следующее:

PS Z:\> $o = @{}
PS Z:\> $o.Name = "Ted"
PS Z:\> $o.Age = 10

Примечание. Этот объект можно также включить как -Body для Invoke-RestMethod, и он будет сериализовать его без дополнительной работы.

Ответ 2

Как @Vasyl указал выше, принятый ответ создает хеш-таблицу, которая на самом деле не имеет свойств, но вместо этого содержит словарь, содержащий keys и values, поэтому он будет работать странно с некоторыми другими функциями PS

See: [TG42]

Вместо этого, 4 способа создания объектов PowerShell, попробуйте выполнить одно из следующих действий:

#1 is probably the newest and easiest syntax unless you have a strong preference

1. Конвертировать Hashtable в PSCustomObject

$o = [pscustomobject]@{
    Name = "Ted";
    Age = 10
}

2. Использование командлета Select-Object

$o = Select-Object @{n='Name';e={'Ted'}},
                   @{n='Age';e={10}} '
                   -InputObject ''

3. Использование New-Object и 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

4. Использование New-Object и хеш-таблиц

$properties = @{
    Name = "Ted";
    Age = 10
}
$o = New-Object psobject -Property $properties;