En Powershell, ¿cuál es la mejor manera de unir dos tablas en una?
Soy bastante nuevo en Powershell, y me pregunto si alguien conoce alguna forma mejor de resolver el siguiente problema de ejemplo.
Tengo una serie de asignaciones de dirección IP a nombre de host. Esto representa una lista de arrendamientos DHCP activos:
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
Tengo otra matriz de asignaciones de dirección MAC a dirección IP. Esto representa una lista de reservas de 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
Para mayor comodidad, pude producir un tercer conjunto de asignaciones desde la dirección MAC a la dirección IP y el nombre del host con el siguiente código. La idea es que$reservations
debe obtener un tercer campo, "Nombre", que se completa cada vez que hay un campo "IP" coincidente:
$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}}
}
}
La salida deseada es algo como esto:
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
¿Hay alguna forma mejor de hacer esto?