Wie kann man mit VBS eine MAC Adresse in eine Var schreiben?
Hallo Leute...
suche eine einfache Möglichkeit per VBS die Lokale MAC des Hosts in eine Variable zu schreiben...
mfg
michA
suche eine einfache Möglichkeit per VBS die Lokale MAC des Hosts in eine Variable zu schreiben...
mfg
michA
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 66242
Url: https://administrator.de/contentid/66242
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo MichaZ,
Wenn mehrere Netzwerkkarten aktiv sind, wird strMAC jeweils überschrieben.
In solch einem Fall könntest du WHERE entspr. einschränken, je nachdem welche Informationen der Konfiguration dir vorliegen. Bspw.
HTH,
gemini
Option Explicit
Dim objWMIService, colAdapters, objAdapter, strMAC, strComputer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colAdapters = objWMIService.ExecQuery _
("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
For Each objAdapter in colAdapters
strMAC = objAdapter.MACAddress
MsgBox strMAC
Next
In solch einem Fall könntest du WHERE entspr. einschränken, je nachdem welche Informationen der Konfiguration dir vorliegen. Bspw.
WHERE IPAddress = aaa.bbb.ccc.ddd
WHERE Caption = xxxxxxxxxxxx
WHERE Description = xxxxxxxxxxx
HTH,
gemini
Hallo MichaZ!
Das "Ganze" ist in erster Linie eine WMI-Abfrage (schau Dir dazu einmal WMI Code Creator oder Scriptomatic und für den Background zB die msdn WMI Reference an), welche eine Collection (Aufzählung) liefert - in diesem Fall eben alle "NetworkAdapter". Mit einer "For Each"-Schleife kannst Du die alle durchgehen und die gewünschte(n) Eigenschafte(n) - im konkreten Fall etwa "MACAddress" - jedes Elements auslesen.
Da Du nur vom ersten Element den Wert mitnehmen wolltest, prüft meine "If"-Zeile einfach, ob schon eine MAC-Adresse in der Variablen "strMAC" steht und nur, wenn noch keine da ist, wird die Adresse des aktuellen Elements in die Variable geschrieben. Ohne diese Prüfung (und ohne Verwendung eines Arrays) würde bei jedem Schleifendurchlauf der Variableninhalt neu gesetzt, so dass am Schluss eben die letzte gefundene MAC-Adresse gespeichert wäre.
Zumeist wird es aber sinnvoller sein, wie von gemini vorgeschlagen, entweder bei der WMI-Abfrage schon eine Bedingung einzubauen oder in der Auswertungsschleife noch eine andere Eigenschaft, etwa "Caption", abzufragen, sodass Du Dich nicht auf die Reihenfolge verlassen musst. Ein Beispiel (für die zweite Möglichkeit) könnte so aussehen:
Damit würden nur Netzwerkgeräte mit einer Bezeichnung, die "Broadcom" enthält (das "vbTextCompare" sorgt dafür, dass Groß- und Kleinschreibung keine Rolle spielt), berücksichtigt werden.
Grüße
bastla
Das "Ganze" ist in erster Linie eine WMI-Abfrage (schau Dir dazu einmal WMI Code Creator oder Scriptomatic und für den Background zB die msdn WMI Reference an), welche eine Collection (Aufzählung) liefert - in diesem Fall eben alle "NetworkAdapter". Mit einer "For Each"-Schleife kannst Du die alle durchgehen und die gewünschte(n) Eigenschafte(n) - im konkreten Fall etwa "MACAddress" - jedes Elements auslesen.
Da Du nur vom ersten Element den Wert mitnehmen wolltest, prüft meine "If"-Zeile einfach, ob schon eine MAC-Adresse in der Variablen "strMAC" steht und nur, wenn noch keine da ist, wird die Adresse des aktuellen Elements in die Variable geschrieben. Ohne diese Prüfung (und ohne Verwendung eines Arrays) würde bei jedem Schleifendurchlauf der Variableninhalt neu gesetzt, so dass am Schluss eben die letzte gefundene MAC-Adresse gespeichert wäre.
Zumeist wird es aber sinnvoller sein, wie von gemini vorgeschlagen, entweder bei der WMI-Abfrage schon eine Bedingung einzubauen oder in der Auswertungsschleife noch eine andere Eigenschaft, etwa "Caption", abzufragen, sodass Du Dich nicht auf die Reihenfolge verlassen musst. Ein Beispiel (für die zweite Möglichkeit) könnte so aussehen:
If InStr(1, objAdapter.Caption, "Broadcom", vbTextCompare) > 0 Then strMAC = objAdapter.MACAddress
Grüße
bastla