Weisheiten - der Netz-Weise Blog

Hier finden Sie Tipps und Tricks für vor, während und nach der Schulung.
1 Minuten Lesezeit (287 Worte)

Eine MAC-Adresse unter Windows oder Windows PE auslesen und vereinheitlichen

Heute stand ich vor der Aufgabe, eine MAC-Adresse einzulesen. Das Einlesen der MAC-Adresse gestaltet sich dabei einfach. Unter Windows am einfachsten geht das über Get-Netadapter:

PS > Get-NetAdapter

Name         InterfaceDescription                ifIndex Status   MacAddress         LinkSpeed
----         --------------------                ------- ------   ----------         ---------
Internal     Microsoft Hyper-V Network Adapter        10 Up       00-15-5D-64-98-00  10 Gbps

Unter Windows PE steht das Cmdlet leider nicht zur Verfügung, da es zu den CDXML-Datei basierten Cmdlets gehört. Glücklicherweise kann man sich behelfen, indem man einfach auf Get-WMIObject zurückgreift:

PS > Get-WmiObject -Class win32_networkadapter

Get-WmiObject -Query "select * from win32_networkadapter where NetConnectionStatus = 2"

ServiceName      : netvsc
MACAddress       : 00:15:5D:64:98:00
AdapterType      : Ethernet 802.3
DeviceID         : 1
Name             : Microsoft Hyper-V Network Adapter
NetworkAddresses :
Speed            : 10000000000

Dummerweise liefern die beiden Ausgabe unterschiedliche Formate zurück. Während Get-NetAdapter jedes Byte mit einem Bindestrich trennt, verwendet WMI als Trennzeichen einen Doppelpunkt. Um das Format zu vereinheitlichen, habe ich mit dem Operator -replace einfach Doppelpunkte und Bindestriche entfernt.

$NIC = Get-WmiObject -Class win32_networkadapter
$NIC.MACAddress -replace ':|-',''

Das Schöne an -replace ist, dass er reguläre Ausdrücke verwendet. ':|-' bedeutet : oder -, und der Ersatz ist ein Leerstring: ''. Letztlich werden also alle MAC-Adresse auf das gleiche Format heruntergebrochen, nämlich ohne Trennzeichen.

Wenn Sie nur die Netzwerkkarten abfragen möchten, die Online sind, können Sie mit WMI einfach auf den Netconnectionstatus filtern:

Get-WmiObject -Query "select * from win32_networkadapter where NetConnectionStatus = 2"

Mit Get-Networkadapter können Sie sehr einfach nur die Netzwerkkarten ermitteln, die eine Adresse per DHCP bekommen haben:

Get-NetIPAddress -PrefixOrigin Dhcp | Get-NetAdapter

Im nächsten Tipp Einen String mit Split in gleich Fragmente teilen zeige ich Ihnen, wie Sie eine flache MAC-Adresse (ohne Trennzeichen) wieder in ein beliebiges Format zurücküberführen können, indem Sie den String an bestimmten Stellen (jedem zweiten Zeichen) auftrennen.

Fehlende virtuelle Switche für Hyper-V VMs ermitte...
Remote Desktop per Powershell Remote aus der Ferne...

Ähnliche Beiträge

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Bereits registriert? Hier einloggen
Gäste
Dienstag, 07. Juli 2020
Für die Registrierung bitte Benutzername, Passwort und nötige Felder eingeben.

By accepting you will be accessing a service provided by a third-party external to https://www.netz-weise-it.training/

Nach oben