如何在PowerShell中创建匿名对象?

时间:2016-03-18 10:00:48

标签: powershell

我想创建一个任意值的对象,有点像我在C#

中可以做到这一点
var anon = new { Name = "Ted", Age = 10 };

3 个答案:

答案 0 :(得分:23)

试试这个:

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

注意:您还可以将此对象作为-Body的{​​{1}}包含在内,并且无需额外工作即可对其进行序列化。

答案 1 :(得分:1)

正如@Vasyl所指出的那样,接受的答案将创建一个哈希表,该哈希表实际上没有属性,而是包含keysvalues的字典,因此它将与其他一些PS函数一起工作

请参阅:$o | Select -Property *

相反,请按4 Ways to Create PowerShell Objects尝试以下任一操作:

#1可能是最新,最简单的语法,除非您有强烈的偏好

1。将哈希表转换为PSCustomObject

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

2。使用Select-Object cmdlet

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

3。使用New-ObjectAdd-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;

答案 2 :(得分:0)

使用PowerShell 5+ 只需声明为:

    $anon = @{ Name="Ted"; Age= 10; }

Example