W Powershell, jaki jest najlepszy sposób na połączenie dwóch tabel w jedną?

Jestem całkiem nowy w Powershell i zastanawiam się, czy ktoś wie o jakimkolwiek lepszym sposobie na wykonanie następującego przykładowego problemu.

Mam tablicę mapowań z adresu IP na nazwę hosta. Reprezentuje listę aktywnych dzierżaw 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

Mam inną tablicę mapowań od adresu MAC do adresu IP. Reprezentuje listę rezerwacji 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

Dla wygody udało mi się stworzyć trzecią tablicę mapowań z adresu MAC na adres IP i nazwę hosta za pomocą następującego kodu. Chodzi o to$reservations powinien otrzymać trzecie pole „Nazwa”, które jest wypełniane za każdym razem, gdy istnieje pasujące pole „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}}
    }
}

Pożądanym wyjściem jest coś takiego:

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

Czy jest lepszy sposób na to?

questionAnswers(2)

yourAnswerToTheQuestion