Wie lassen sich in Powershell zwei Tabellen am besten zu einer zusammenfügen?

Ich bin ziemlich neu in Powershell und frage mich, ob jemand einen besseren Weg kennt, um das folgende Beispielproblem zu lösen.

Ich habe eine Reihe von Zuordnungen von der IP-Adresse zum Hostnamen. Dies ist eine Liste der aktiven DHCP-Leases:

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

Ich habe ein anderes Array von Zuordnungen von MAC-Adresse zu IP-Adresse. Dies ist eine Liste von IP-Reservierungen:

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

Der Einfachheit halber konnte ich ein drittes Array von Zuordnungen von der MAC-Adresse zur IP-Adresse und zum Hostnamen mithilfe des folgenden Codes erstellen. Die Idee ist das$reservations sollte ein drittes Feld "Name" erhalten, das immer dann ausgefüllt wird, wenn es ein passendes "IP" -Feld gibt:

$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}}
    }
}

Die gewünschte Ausgabe sieht ungefähr so ​​aus:

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

Gibt es einen besseren Weg, dies zu tun?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage