MAC Adresse auslesen in Variable,Variable mit Textliste vergleichen, Computernamen umbenennen
Ich möchte in einem VBS die MAC Adresse des Clients auslesen und in eine Variable Schreiben.
Diese Variable soll mit einer Textliste verglichen werden in der "MAC,Computername" zB "00:00:00:00:00:00;PC0001" steht.
Wenn eine Übereinstimmung der MAC gefunden wird, wird der Computername in eine Variable gesetzt und der Computername umbenannt.
Die Lösung wie ich die MAC Adresse bekomme und den Computer umbenenne habe ich schon.
Leider fehlt mir das Herzstück - vergleichen der MAC Adresse und übernehmen des Computernamens in die Variable - da kann ich zwar
Zum ermitteln der MAC-Adresse:
Vergleichen der Variablen
Zum umbenennen des Clients:
Leider Fehlt mir das Wissen um den Mittleren Teil alleine zu lösen. mit dem Script kann ich zwar die MAC im File ermitteln, jedoch nicht den Computernamen, der in der Textdatei hinter dem Komma steht wieder in die VBS Variable bringen
Sollte jemand einen Ansatz haben bzw mir helfen können wäre ich sehr dankbar.
Grüße
bazo
Diese Variable soll mit einer Textliste verglichen werden in der "MAC,Computername" zB "00:00:00:00:00:00;PC0001" steht.
Wenn eine Übereinstimmung der MAC gefunden wird, wird der Computername in eine Variable gesetzt und der Computername umbenannt.
Die Lösung wie ich die MAC Adresse bekomme und den Computer umbenenne habe ich schon.
Leider fehlt mir das Herzstück - vergleichen der MAC Adresse und übernehmen des Computernamens in die Variable - da kann ich zwar
Zum ermitteln der MAC-Adresse:
set fso = createobject ("scripting.filesystemobject")
set ntwrk = createobject ("wscript.network")
strComputer = ntwrk.computername
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
WScript.Echo objAdapter.MACAddress
Next
Vergleichen der Variablen
Option Explicit
Dim objFSO, objWshNetwork, objFile
Dim strWorkDir, strText, strLine, strPathFind
Const ForReading = 1, ForWriting = 2, ForAppending = 8
strWorkDir = "PfadzurVergleich.txt"
strText = ""
strPathFind = VariableDerMacAdresseDieVerglichenwerdensoll
Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject")
strText = strWorkDir
wscript.echo strText
If objFSO.FileExists(strText) Then
Set objFile = objFSO.OpenTextFile(strText, ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
If strLine = strPathFind Then
wscript.echo strPathFind
End If
Loop
objFile.Close
End If
Zum umbenennen des Clients:
If WScript.Arguments.length =0 Then
Set objShell = CreateObject("Shell.Application")
'Pass a bogus argument with leading blank space, say [ uac]
objShell.ShellExecute "wscript.exe", Chr(34) & _
WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else
Dim computername
computername=varComputernameTextliste 'Hier soll die Variable, die aus der Textliste gefunden wurde befüllt werden.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colComputers = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objComputer in colComputers
err = objComputer.Rename(computername)
Next
End if
Leider Fehlt mir das Wissen um den Mittleren Teil alleine zu lösen. mit dem Script kann ich zwar die MAC im File ermitteln, jedoch nicht den Computernamen, der in der Textdatei hinter dem Komma steht wieder in die VBS Variable bringen
Sollte jemand einen Ansatz haben bzw mir helfen können wäre ich sehr dankbar.
Grüße
bazo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 142539
Url: https://administrator.de/forum/mac-adresse-auslesen-in-variable-variable-mit-textliste-vergleichen-computernamen-umbenennen-142539.html
Ausgedruckt am: 23.02.2025 um 15:02 Uhr
14 Kommentare
Neuester Kommentar
Hallo djbazo!
Versuch es mit folgendem (ungetesteten) Ersatz für die Zeilen 19 bis 21:
Grüße
bastla
P.S.: Aus dem Variablennamen "strPathFind" hätte ich nicht unbedingt auf den Variableninhalt "MAC-Adresse" geschlossen ...
Versuch es mit folgendem (ungetesteten) Ersatz für die Zeilen 19 bis 21:
If UCase(Left(strLine, Len(strPathFind))) = UCase(strPathFind) Then
computername = Split(strLine, ";")(1)
WScript.Echo computername
Exit Do
End If
bastla
P.S.: Aus dem Variablennamen "strPathFind" hätte ich nicht unbedingt auf den Variableninhalt "MAC-Adresse" geschlossen ...
Hallo djbazo!
Ersetze
durch
[Edit] bzw noch einfacher:
[/Edit]
Grüße
bastla
Ersetze
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
If UCase(Left(strLine, Len(strMacFind))) = UCase(strMacFind) Then
computername = Split(strLine, ",")(1)
Else
computername = "DUMMYNAME"
Exit Do
End If
Loop
computername = ""
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
If UCase(Left(strLine, Len(strMacFind))) = UCase(strMacFind) Then
computername = Split(strLine, ",")(1)
Exit Do
End If
Loop
If computername = "" Then computername = "DUMMYNAME"
computername = "DUMMYNAME"
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
If UCase(Left(strLine, Len(strMacFind))) = UCase(strMacFind) Then
computername = Split(strLine, ",")(1)
Exit Do
End If
Loop
Grüße
bastla

Hallo bastla
Beim Aufrufen des Scripts erhalte ich folgende. Dein Hinweis: fruchtet nicht...
Danke, Laszlo
Beim Aufrufen des Scripts erhalte ich folgende
Fehlermeldung: .....(58,3) Laufzeitfehler in Microsoft VBScript: Variable ist nicht definiert: 'objShell'
Dim fso, ntwrk,strComputer,objWMIService,colAdapters,objAdapter,SAVEMACAddress
Danke, Laszlo

Guten Morgen baslta
Danke für die prompte Antwort. Wieder einen Schritt weiter
Musste noch ergänzen. Nun erscheint folgende Fehlermeldung: Fehler: Die Parameter der Methode sind ungültig. Code: 8004102F. Quelle: SWbemObjectEx. Die Fehlermeldung bezieht sich auf die Zeile am Ende des Scripts.
Ich habe noch herausgefunden, wenn in der Zeile durch ersetzt wird (Der Grund für das Semikolon ist, in der Textdatei "Vergleich.csv" ist die Mac-Adresse und der Hostname durch ein ";" getrennt). Dafür erscheint jetzt diese Fehlermeldung: Der Remoteservercomputer ist existiert nicht oder ist nicht verfügbar 'GetObject'. Die Fehlermeldung bezieht sich auf die Zeile
Vielleicht sollte ich erwähnen, dass das Script unter Windows 7 läuft.
Danke für Deine Hilfe, Laszlo
Danke für die prompte Antwort. Wieder einen Schritt weiter
colComputers, objComputer
err = objComputer.Rename(computernamerename)
Ich habe noch herausgefunden, wenn in der Zeile
strComputer = "."
strComputer = ";"
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Vielleicht sollte ich erwähnen, dass das Script unter Windows 7 läuft.
Danke für Deine Hilfe, Laszlo

Hi bastla
Habs wieder geändert... Dann erscheint diese Fehlermeldung Die Parameter der Methode sind ungültig. Sie bezieht sich auf diese Zeile
Danke im Voraus, Laszlo
Habs wieder geändert... Dann erscheint diese Fehlermeldung Die Parameter der Methode sind ungültig. Sie bezieht sich auf diese Zeile
err = objComputer.Rename(computernamerename)
Danke im Voraus, Laszlo

Hi bastla
also. habs geändert. In Zeile 43 heisst es nun und in der Zeile 66 heisst es Nun kommt die Fehlermeldung Index ausserhalb des gültigen Bereichs: '[number: 1]'. Die Datei Vergleich.csv hat folgenden Inhalt An Stelle des Semikolons habe ichs auch schon mit einem Punkt probiert. Immer die gleiche Fehlermeldung.
Danke & Gruss, Laszlo
computername = Split(strLine, ",")(1)
strComputer = "."
0A:0B:0C:0D:0E:0F;WI112200
Danke & Gruss, Laszlo
Hallo Laszlo!
Wenn Deine Textdatei offensichtlich tatsächlich ";" als Trennzeichen verwendet, solltest Du mir (bzw meinem Posting von 12:31:52 Uhr ) vertrauen und in Zeile 43 zwischen den Anführungszeichen genau dieses Tennzeichen verwenden ...
Falls dann dennoch "
Grüße
bastla
Wenn Deine Textdatei offensichtlich tatsächlich ";" als Trennzeichen verwendet, solltest Du mir (bzw meinem Posting von 12:31:52 Uhr ) vertrauen und in Zeile 43 zwischen den Anführungszeichen genau dieses Tennzeichen verwenden ...
Falls dann dennoch "
objComputer.Rename
" fehlschlägt, könnte ich nur noch vermuten, dass Du keine Adminrechte hättest ...Grüße
bastla

Hallo bastla
*uff*... es waren die Adminrechte >
Nun funkioniert es!
Herzlichen Dank! Ev. bis bald
Laszlo
*uff*... es waren die Adminrechte >
Herzlichen Dank! Ev. bis bald