Weisheiten - der Netz-Weise Blog
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
Kommentare