警告:我希望在PowerShell v2中做到这一点(对不起!)。
我想要一个具有数组属性的自定义对象(可能是作为自定义类型创建的)。我知道如何制作具有“ noteproperty”属性的自定义对象:
$person = new-object PSObject
$person | add-member -type NoteProperty -Name First -Value "Joe"
$person | add-member -type NoteProperty -Name Last -Value "Schmoe"
$person | add-member -type NoteProperty -Name Phone -Value "555-5555"
我知道如何通过自定义类型制作自定义对象:
Add-Type @"
public struct PersonType {
public string First;
public string Last;
public string Phone;
}
"@
$person += New-Object PersonType -Property @{
First = "Joe";
Last = "Schmoe";
Phone = "555-5555";
}
如何创建包含数组属性的类型的自定义对象?类似于此哈希表,但作为对象:
$hash = @{
First = "Joe"
Last = "Schmoe"
Pets = @("Fluffy","Spot","Stinky")
}
我很确定我可以在PowerShell v3中使用[PSCustomObject]$hash
来执行此操作,但是我需要包括v2。
谢谢。
答案 0 :(得分:3)
使用Add-Member
添加笔记属性时,-Value
可以是一个数组。
$person | add-member -type NoteProperty -Name Pets -Value @("Fluffy","Spot","Stinky")
如果您想像首先创建示例一样将属性首先创建为哈希表,则也可以将其直接传递给New-Object
:
$hash = @{
First = "Joe"
Last = "Schmoe"
Pets = @("Fluffy","Spot","Stinky")
}
New-Object PSObject -Property $hash
您的PersonType
示例实际上是用C#编写的字符串形式,可以即时进行编译,因此语法将是数组属性的C#语法:
Add-Type @"
public struct PersonType {
public string First;
public string Last;
public string Phone;
public string[] Pets;
}
"@