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?