In Powershell, was ist der beste Weg zum verknüpfen von zwei Tabellen in einer?

Ich bin ziemlich neu in Powershell, und Frage mich, ob jemand weiß, einen besseren Weg, um zu erreichen das folgende Beispiel problem.

Ich habe ein array von Zuordnungen von IP-Adresse zu host-Namen. Dies stellt 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

Habe ich ein weiteres array von Zuordnungen von MAC-Adresse zu IP-Adresse. Dies stellt 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

Für die Bequemlichkeit, ich war in der Lage zu produzieren eine Dritte Reihe von Zuordnungen von MAC-Adresse zu IP-Adresse und den host-Namen mithilfe der folgenden code. Die Idee ist, dass $reservations sollte eine Dritte Feld, "Name", welches aufgefüllt wird, wenn es eine passende "IP" - Feld:

$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 ist so etwas wie dieses:

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 eine bessere Möglichkeit, dies zu tun?

  • Fast unglaublich, dass dies noch nicht enthalten in der PowerShell
  • Wie waren Sie in der Lage, eine Tabelle für die IP-Adresse zu Host-Namen für alle aktiven leases? Ich habe mit dem DHCP-Modul, aber kann es nicht herausfinden. Ich bin auch versucht, zu kombinieren, einige Tabellen.
  • Ich war mit netsh's dhcp-Befehl, um eine Liste, und dann analysieren Sie die Ausgabe mit regulären Ausdrücken. Es gibt auch die DHCP-Server-Verwaltungs-API, aber es ist nur für native-code. Ich bin mir nicht bewusst, irgendwelche powershell-Modul oder .net-Bibliothek für diese Art der Sache. Ich landete schreiben P/Invoke-Wrapper, um die DHCP-Server-Verwaltungs-API.
Schreibe einen Kommentar