在Powershell中,将两个表合并为一个表的最佳方法是什么?
我是Powershell的新手,我想知道是否有人知道有任何更好的方法来完成以下示例问题。
我有一个从IP地址到主机名的映射数组。这表示活动DHCP租约列表:
PS H:\> $leases
IP Name
-- ----
192.168.1.1 Apple
192.168.1.2 Pear
192.168.1.3 Banana
192.168.1.99 FishyPC
我有另一个从MAC地址到IP地址的映射数组。这代表了IP预订列表:
PS H:\> $reservations
IP MAC
-- ---
192.168.1.1 001D606839C2
192.168.1.2 00E018782BE1
192.168.1.3 0022192AF09C
192.168.1.4 0013D4352A0D
为方便起见,我能够使用以下代码生成从MAC地址到IP地址和主机名的第三个映射数组。我们的想法是$reservations应该获得第三个字段“Name”,只要有匹配的“IP”字段就填充该字段:
$reservations = $reservations | foreach {
$res = $_
$match = $leases | where {$_.IP -eq $res.IP} | select -unique
if ($match -ne $NULL) {
"" | select @{n="IP";e={$res.IP}}, @{n="MAC";e={$res.MAC}}, @{n="Name";e={$match.Name}}
}
}
所需的输出是这样的:
PS H:\> $ideal
IP MAC Name
-- --- ----
192.168.1.1 001D606839C2 Apple
192.168.1.2 00E018782BE1 Pear
192.168.1.3 0022192AF09C Banana
192.168.1.4 0013D4352A0D
有没有更好的方法呢?
慕莱坞森
牛魔王的故事