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?