具有关系值的 PSObject - 一对一

PSObject with relational values - one to manny

想要填充以下 PSObject,以便它可以在 IP 和主机名之间具有 one:one 或 one:many 关系。

$hostobj = New-Object PSOBject
$hostobj | Add-Member -MemberType NoteProperty -Name "ip_address" -Value ""
$hostobj | Add-Member -MemberType NoteProperty -Name "hostnames" -Value ""

这给了我正确的标题,但是当我尝试添加多个值时,它会在尝试添加重复值时出错:

$hostobj = New-Object PSOBject
$hostobj | Add-Member -MemberType NoteProperty -Name "ip_address" -Value "1.1.1.1"
$hostobj | Add-Member -MemberType NoteProperty -Name "hostnames" -Value "server1"
$hostobj | Add-Member -MemberType NoteProperty -Name "ip_address" -Value "2.2.2.2"
$hostobj | Add-Member -MemberType NoteProperty -Name "hostnames" -Value "server2"

这是为什么?

可以很容易地完成一对多:

$hostobj = New-Object PSOBject
$hostobj | Add-Member -MemberType NoteProperty -Name "ip_address" -Value "1.1.1.1"
$hostobj | Add-Member -MemberType NoteProperty -Name "hostnames" -Value "server1", "server2", "server3"

其中任何一个是额外的数据集来自:

1.1.1.1     server1     
2.2.2.2     server2
3.3.3.3     server3
4.5.6.7     server4     server5     server6     server7     
8.8.8.8     server8     
9.9.9.9     server9

1.1.1.1
server1
2.2.2.2
server2
3.3.3.3
server3
4.5.6.7
server4
server5
server6
server7
8.8.8.8
server8
9.9.9.9
server9

您想创建一个对象列表,例如:

$ArrayList = New-Object System.Collections.ArrayList

$hostobj = New-Object PSOBject
$hostobj | Add-Member -MemberType NoteProperty -Name "ip_address" -Value "1.1.1.1"
$hostobj | Add-Member -MemberType NoteProperty -Name "hostnames" -Value "server1"

$ArrayList.Add($hostobj)

$hostobj = New-Object PSOBject
$hostobj | Add-Member -MemberType NoteProperty -Name "ip_address" -Value "2.2.2.2"
$hostobj | Add-Member -MemberType NoteProperty -Name "hostnames" -Value "server2"

$ArrayList.Add($hostobj)

以便$ArrayList包含所有宿主对象。每个对象都有一个 ip_addresshostnames.

的值

如果这对您没有帮助,请具体说明您 expect/what 您正尝试 do/work 使用的内容。