Dans Powershell, quel est le meilleur moyen de joindre deux tables en une seule?

Je suis assez nouveau dans Powershell, et je me demande si quelqu'un sait de toute meilleur moyen d'atteindre l'exemple suivant problème.

J'ai un tableau de correspondance entre adresse IP en nom d'hôte. Cela représente une liste des baux 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

J'ai un autre tableau de correspondance entre l'adresse MAC à l'adresse IP. Cela représente une liste d'IP réservations:

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

Pour des raisons de commodité, j'ai été en mesure de produire un troisième tableau de correspondance entre l'adresse MAC à l'adresse IP et le nom d'hôte en utilisant le code suivant. L'idée est que $reservations devriez obtenir un troisième champ "Nom", qui est peuplée dès qu'il y a une correspondance "IP" champ:

$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 sortie désirée est quelque chose comme ceci:

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

Est-il une meilleure manière de faire ceci?

Presque incroyable que ce n'est toujours pas inclus dans PowerShell
Comment avez-vous été en mesure d'obtenir une table pour Adresse IP à un Nom d'Hôte pour tous les baux actifs? J'ai été en utilisant le module DHCP, mais ne peut pas le comprendre. Je suis aussi en train d'essayer de combiner certaines de ces tables.
J'ai été en utilisant netsh's de commande dhcp pour obtenir une liste, et ensuite, l'analyse de la sortie avec des expressions régulières. Il y a aussi le Serveur DHCP de l'API de Gestion, mais il est uniquement disponible en code natif. Je ne suis pas au courant de tout module powershell ou .net-library pour faire ce genre de chose. J'ai fini par écrire P/Invoke wrappers pour le Serveur DHCP de l'API de Gestion.

OriginalL'auteur Michael Steele | 2009-12-04