Mit der PowerShell mac Adressen auslesen

MAC-Adresse ist die eindeutige physikalische Adresse von jedem Netzwerkadapter. Generell lässt sich diese per cmd auslesen. Auch kann man allerdings mit der PowerShell MAC Adressen auslesen. Benötigt wird diese z. B., wenn man im DHCP Server eine bestimmte Adresse reservieren möchte.

Jeder PC besitzt weiterhin einen Cache, in welchem sämtliche erkannten MAC Adressen für eine gewisse Zeit gespeichert werden. Allgemein lässt sich dieser Cache über die cmd mit dem folgenden Befehl auslesen.

Dieses Befehlszeilentool zeigt eine Liste aller im Cache gespeicherten IP-Adressen und den entsprechenden MAC-Adressen an. Mit dieser Information kannst du Probleme im Netzwerk diagnostizieren und beheben.

ARP Tabelle anzeigen

arp -a

ARP ist dabei das sogenannte Address Resolution Protocol. Dabei ermittelt dieses Protokoll aus einer IP-Adresse die zugehörige MAC-Adresse und speichert die Ergebnisse in den ARP-Cache ab.

Der ARP-Cache ermöglicht es auch, die MAC-Adressen von Geräten im lokalen Netzwerk zu überwachen und sicherzustellen, dass nur autorisierte Geräte Zugriff haben.

Weiterhin kann das Auslesen des ARP-Caches auch bei der Fehlerbehebung in Verbindung mit dem DHCP-Server hilfreich sein, wenn es unter anderem erforderlich ist, eine bestimmte IP-Adresse für ein Gerät zu reservieren.

Generell wird das Protokoll nur für IPv4 Adressen verwendet. Bei IPv6 Adressen ist hierfür das Neigbor Discovery Protocol (NDP) zuständig.

Oft ist es jetzt interessant, sämtliche erkannten MAC Adressen eines Rechners auflisten zu lassen. Sei es jetzt um evtl. Fehler zu entdecken, Hacking Angriff wie ARP Spoofing oder nur um ein bestimmtes Netzwerkgerät aufzufinden.

PowerShell MAC Adressen auslesen – Benötigte Cmdlet

Die Windows PowerShell bietet hierfür das Cmdlet Get-NetNeighbor an. Der Vorteil liegt bei der PowerShell natürlich darin, dass man viele Möglichkeiten hat, die Suche zu verfeinern.

Get-NetNeighbor

Obiges Cmdlet liefert nun alle erkannten MAC-Adressen (Link Layer Address) aus. Da die Liste sehr lang und unübersichtlich sein kann, gibt es verschiedene Möglichkeiten, um die Ausgabe etwas übersichtlicher zu gestalten.

Als Erstes sollte man wissen, dass in der Windows PowerShell die MAC-Adresse als LinkLayerAddress bezeichnet werden.

Weiterhin liefert die Ausgabe jeweils die IP-Adressfamilie sowie auch einen Status. Sind jetzt nur die IPv4 Adressen interessant, so benötigt man folgende Befehlssequenz.

Get-NetNeighbor -AddressFamily IPv4

Auch den Status kann man sich anzeigen lassen. So gibt es z. B. den Status Unreachable, Incomplete, State, Reachable, oder auch permanent. Um jetzt alle erreichbaren IPv4 Adressen mit dessen LinkLayerAdress auszulesen, wird noch die Option State mit dem Parameter Reachable angehängt.

Get-NetNeighbor -AddressFamily IPv4 -State Reachable

Mit der PowerShell MAC Adressen auslesen
Mit der Windows Powershell den ARP-Cache auslesen – Alle erkannten MAC Adressen anzeigen

Auch könnte man nach einer bestimmten MAC-Adresse suchen. Wenn man z. B. alle LinkLayerAdressen, welche mit 40 beginnen, auslesen möchte, so gibt man dies direkt nach der Option LinkLayerAdress gefolgt von der gewünschten Zahl und einer Wildcard (*) ein.

Get-NetNeighbor -AddressFamily IPv4 -LinkLayerAddress 40*

Die Windows PowerShell bietet hier sehr viel mehr Optionen zum Auslesen des Arp-Caches als die cmd. Besonders wenn es um das Auffinden spezieller MAC-Adressen oder um das Prüfen auf die Erreichbarkeit geht.

Um per PowerShell MAC Adressen auslesen zu können, reicht im Prinzip ein einziges Cmdlet. Wenn dieses wieder in Kombination mit der PowerShell Pipe verwendet wird, hat man starkes Werkzeug um viele Information bzgl. dem Netzwerk und dessen Konfiguration auszulesen. Mit der PowerShell Pipe kannst du im Prinzip Befehlsausgabe direkt weiterverarbeiten.

So könntest du dir jetzt die Ausgabe aus obigen Befehl in einer ordentlichen Tabelle anzeigen lassen. Gerne lässt sich dabei das Cmdlet Out-GridView verwenden. Dies ist eine kleine Gui, welche dir die Ausgabe in tabellairscher Form liefert.

Das folgende Code Beispiel zeigt dabei, wie du alle erkannten MAC-Adressen in einer Tabelle darstellen kannst. Beachte, hier wurde die Ausgabe direkt mithilfe der Pipe an das Cmdlet Out-GridView übergeben.

Get-NetNeighbor -AddressFamily IPv4 -LinkLayerAddress * | Out-GridView

Natürlich wären auch andere Ausgaben denkbar, wie z.B. die Speicherung der Dateien in einer Datei.

Fazit und Ausblick

Um die ARP Tabelle anzeigen zu können, gibt es also mehrere Optionen. So zum einen den Befehl aus der Eingabeaufforderung mit dem Name arp. Aber auch mit der PowerShell können mac Adresse ausgelesen werden. Gerade mit der PowerShell können noch viele weiten Parameter hinzugefügt werden, wodurch du wesentlich mehr Optionen hast.

Verwendest du die PowerShell oder noch immer die altbekannten Befehle der cmd?

32a5fa3707954b00a3b4afc23df46a0a
Der Blogbetreiber und Autor: Markus Elsberger

Über den Autor

Mein Name ist Markus Elsberger und ich beschäftige mich mit der Administration von Windows und Linux Systemen sowie mit diversen Themen bzgl. Netzwerktechnik. In meiner Lehrtätigkeit erstelle ich verschiedene Szenarien und teste auch verschiedene Konfigurationen, welche ich in diesem Blog festhalten möchte.


Kostenlose Befehlsreferenzen und E-Books
(Netzwerkanalyse, Benutzerverwaltung, Festplattenkonfiguration, u. v. m.)


Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

×