Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Frage Entwicklung VB for Applications

GELÖST

MAC Adresse auslesen in Variable,Variable mit Textliste vergleichen, Computernamen umbenennen

Mitglied: djbazo

djbazo (Level 1) - Jetzt verbinden

10.05.2010, aktualisiert 16:38 Uhr, 9761 Aufrufe, 14 Kommentare

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:
01.
set fso = createobject ("scripting.filesystemobject") 
02.
set ntwrk = createobject ("wscript.network") 
03.
strComputer = ntwrk.computername 
04.
 
05.
Set objWMIService = GetObject _ 
06.
("winmgmts:{impersonationLevel=impersonate}!\\" _ 
07.
& strComputer & "\root\cimv2") 
08.
 
09.
Set colAdapters = objWMIService.ExecQuery _ 
10.
("Select * From Win32_NetworkAdapterConfiguration " _ 
11.
& "Where IPEnabled = True") 
12.
 
13.
For Each objAdapter in colAdapters 
14.
WScript.Echo objAdapter.MACAddress 
15.
Next
Vergleichen der Variablen
01.
Option Explicit 
02.
 
03.
Dim objFSO, objWshNetwork, objFile 
04.
Dim strWorkDir, strText, strLine, strPathFind 
05.
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
06.
 
07.
strWorkDir = "PfadzurVergleich.txt" 
08.
strText = "" 
09.
strPathFind = VariableDerMacAdresseDieVerglichenwerdensoll 
10.
 
11.
Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject") 
12.
 
13.
strText = strWorkDir 
14.
wscript.echo strText 
15.
  If objFSO.FileExists(strText) Then 
16.
  Set objFile = objFSO.OpenTextFile(strText, ForReading) 
17.
    Do Until objFile.AtEndOfStream 
18.
    strLine = objFile.ReadLine 
19.
        If strLine = strPathFind Then 
20.
        wscript.echo strPathFind 
21.
        End If 
22.
    Loop 
23.
    objFile.Close 
24.
  End If
Zum umbenennen des Clients:
01.
If WScript.Arguments.length =0 Then 
02.
  Set objShell = CreateObject("Shell.Application") 
03.
  'Pass a bogus argument with leading blank space, say [ uac] 
04.
  objShell.ShellExecute "wscript.exe", Chr(34) & _ 
05.
  WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1 
06.
Else 
07.
 
08.
Dim computername 
09.
computername=varComputernameTextliste 'Hier soll die Variable, die aus der Textliste gefunden wurde befüllt werden. 
10.
 
11.
strComputer = "." 
12.
Set objWMIService = GetObject("winmgmts:" _ 
13.
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
14.
 
15.
Set colComputers = objWMIService.ExecQuery _ 
16.
    ("Select * from Win32_ComputerSystem") 
17.
 
18.
For Each objComputer in colComputers 
19.
    err = objComputer.Rename(computername) 
20.
Next 
21.
 
22.
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
Mitglied: bastla
10.05.2010 um 16:48 Uhr
Hallo djbazo!

Versuch es mit folgendem (ungetesteten) Ersatz für die Zeilen 19 bis 21:
01.
If UCase(Left(strLine, Len(strPathFind))) = UCase(strPathFind) Then 
02.
    computername = Split(strLine, ";")(1) 
03.
    WScript.Echo computername 
04.
    Exit Do 
05.
End If
Grüße
bastla

P.S.: Aus dem Variablennamen "strPathFind" hätte ich nicht unbedingt auf den Variableninhalt "MAC-Adresse" geschlossen ...
Bitte warten ..
Mitglied: djbazo
10.05.2010 um 17:03 Uhr
Vielen Dank für deine Antwort.
Ich werde das ganze prüfen und mich dann zurückmelden.

Danke für den Hinweis - ich werde das mit der Variable sofort ändern.
Bitte warten ..
Mitglied: djbazo
11.05.2010 um 08:43 Uhr
Hallo Bastla,

mir ist nun noch eine Frage gekommen.
Angenommen, die MAC Adresse wird in der Liste nicht gefunden - dann setze ich einen DUMMYNAMEN als PC Name.

Anbei nun das ganze Script, falls es jemand für sinnvoll erachtet und benötigt.

01.
'Gesamt 
02.
Option Explicit 
03.
'----------------------------------------- 
04.
'getMAC 
05.
'----------------------------------------- 
06.
Dim fso, ntwrk,strComputer,objWMIService,colAdapters,objAdapter,SAVEMACAddress 
07.
set fso = createobject ("scripting.filesystemobject") 
08.
set ntwrk = createobject ("wscript.network") 
09.
strComputer = ntwrk.computername 
10.
 
11.
Set objWMIService = GetObject _ 
12.
("winmgmts:{impersonationLevel=impersonate}!\\" _ 
13.
& strComputer & "\root\cimv2") 
14.
 
15.
Set colAdapters = objWMIService.ExecQuery _ 
16.
("Select * From Win32_NetworkAdapterConfiguration " _ 
17.
& "Where IPEnabled = True") 
18.
 
19.
For Each objAdapter in colAdapters 
20.
SAVEMACAddress = objAdapter.MACAddress 
21.
Next 
22.
 
23.
'----------------------------------------- 
24.
'Vergleich 
25.
'----------------------------------------- 
26.
 
27.
Dim objFSO, objWshNetwork, objFile 
28.
Dim strWorkDir, strText, strLine, strMacFind, computername 
29.
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
30.
 
31.
strWorkDir = "Vergleich.csv" 
32.
strText = "" 
33.
strMacFind = SAVEMACAddress 
34.
 
35.
Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject") 
36.
 
37.
strText = strWorkDir 
38.
  If objFSO.FileExists(strText) Then 
39.
  Set objFile = objFSO.OpenTextFile(strText, ForReading) 
40.
    Do Until objFile.AtEndOfStream 
41.
    strLine = objFile.ReadLine 
42.
        If UCase(Left(strLine, Len(strMacFind))) = UCase(strMacFind) Then  
43.
			computername = Split(strLine, ",")(1) 
44.
		Else 
45.
			computername = "DUMMYNAME" 
46.
			Exit Do 
47.
		End If 
48.
    Loop 
49.
    objFile.Close 
50.
  End If 
51.
   
52.
'----------------------------------------- 
53.
'Rename 
54.
'----------------------------------------- 
55.
 
56.
If WScript.Arguments.length =0 Then 
57.
  Set objShell = CreateObject("Shell.Application") 
58.
  'Pass a bogus argument with leading blank space, say [ uac] 
59.
  objShell.ShellExecute "wscript.exe", Chr(34) & _ 
60.
  WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1 
61.
Else 
62.
 
63.
Dim computernamerename 
64.
computernamerename = computername 
65.
 
66.
strComputer = "." 
67.
Set objWMIService = GetObject("winmgmts:" _ 
68.
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
69.
 
70.
Set colComputers = objWMIService.ExecQuery _ 
71.
    ("Select * from Win32_ComputerSystem") 
72.
 
73.
For Each objComputer in colComputers 
74.
    err = objComputer.Rename(computernamerename) 
75.
Next 
76.
 
77.
End if
Vielen Dank für deine Antwort!!!
Bitte warten ..
Mitglied: djbazo
11.05.2010 um 08:47 Uhr
"Angenommen, die MAC Adresse wird in der Liste nicht gefunden - dann setze ich einen DUMMYNAMEN als PC Name."
Leider passt meine Zeile 42-47 nicht ganz....sollte jemand weiterhelfen können wäre ich dankbar.
Bitte warten ..
Mitglied: bastla
11.05.2010 um 09:59 Uhr
Hallo djbazo!

Ersetze
01.
    Do Until objFile.AtEndOfStream 
02.
    strLine = objFile.ReadLine 
03.
        If UCase(Left(strLine, Len(strMacFind))) = UCase(strMacFind) Then  
04.
			computername = Split(strLine, ",")(1) 
05.
		Else 
06.
			computername = "DUMMYNAME" 
07.
			Exit Do 
08.
		End If 
09.
    Loop
durch
01.
    computername = "" 
02.
    Do Until objFile.AtEndOfStream 
03.
    strLine = objFile.ReadLine 
04.
        If UCase(Left(strLine, Len(strMacFind))) = UCase(strMacFind) Then  
05.
            computername = Split(strLine, ",")(1) 
06.
            Exit Do 
07.
        End If 
08.
    Loop 
09.
    If computername = "" Then computername = "DUMMYNAME"
[Edit] bzw noch einfacher:
01.
    computername = "DUMMYNAME" 
02.
    Do Until objFile.AtEndOfStream 
03.
    strLine = objFile.ReadLine 
04.
        If UCase(Left(strLine, Len(strMacFind))) = UCase(strMacFind) Then  
05.
            computername = Split(strLine, ",")(1) 
06.
            Exit Do 
07.
        End If 
08.
    Loop
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: 94454
13.10.2010 um 15:46 Uhr
Hallo bastla

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

Danke, Laszlo
Bitte warten ..
Mitglied: bastla
13.10.2010 um 16:04 Uhr
Hallo Laszlo!

Mein Hinweis hätte zur Zeile
Dim fso, ntwrk,strComputer,objWMIService,colAdapters,objAdapter,SAVEMACAddress,objShell
führen sollen ...

Grüße
bastla
Bitte warten ..
Mitglied: 94454
14.10.2010 um 08:54 Uhr
Guten Morgen baslta

Danke für die prompte Antwort. Wieder einen Schritt weiter Musste noch
01.
colComputers, objComputer
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
01.
err = objComputer.Rename(computernamerename)
am Ende des Scripts.

Ich habe noch herausgefunden, wenn in der Zeile
01.
strComputer = "."
durch
01.
strComputer = ";"
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
01.
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
Bitte warten ..
Mitglied: bastla
14.10.2010 um 09:17 Uhr
Hallo Laszlo!
wenn in der Zeile
01.
strComputer = "."
... etwas geändert wird, ist das definitiv die falsche Stelle - die Aufteilung der CSV-Datei erfolgt in Zeile 43 ...

Grüße
bastla
Bitte warten ..
Mitglied: 94454
14.10.2010 um 09:55 Uhr
Hi bastla

Habs wieder geändert... Dann erscheint diese Fehlermeldung Die Parameter der Methode sind ungültig. Sie bezieht sich auf diese Zeile
01.
err = objComputer.Rename(computernamerename)
Danke im Voraus, Laszlo
Bitte warten ..
Mitglied: bastla
14.10.2010 um 12:31 Uhr
Hallo Laszlo!
Habs wieder geändert...
... und auch die Zeile 43 auf
computername = Split(strLine, ";")(1)
korrigiert? (Und sichergestellt, dass der eingelesene Computername ok ist, also zB kein Komma enthält)?

Grüße
bastla
Bitte warten ..
Mitglied: 94454
14.10.2010 um 13:32 Uhr
Hi bastla

also. habs geändert. In Zeile 43 heisst es nun
01.
computername = Split(strLine, ",")(1)
und in der Zeile 66 heisst es
01.
strComputer = "."
Nun kommt die Fehlermeldung Index ausserhalb des gültigen Bereichs: '[number: 1]'. Die Datei Vergleich.csv hat folgenden Inhalt
01.
0A:0B:0C:0D:0E:0F;WI112200
An Stelle des Semikolons habe ichs auch schon mit einem Punkt probiert. Immer die gleiche Fehlermeldung.

Danke & Gruss, Laszlo
Bitte warten ..
Mitglied: bastla
14.10.2010 um 15:38 Uhr
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 "objComputer.Rename" fehlschlägt, könnte ich nur noch vermuten, dass Du keine Adminrechte hättest ...

Grüße
bastla
Bitte warten ..
Mitglied: 94454
14.10.2010 um 16:14 Uhr
Hallo bastla

*uff*... es waren die Adminrechte > Nun funkioniert es!

Herzlichen Dank! Ev. bis bald Laszlo
Bitte warten ..
Ähnliche Inhalte
Entwicklung
Computername zu MAC-Adresse zuordnen Powershell
gelöst Frage von HanutaEntwicklung1 Kommentar

Hallo Zusammen, Ich habe folgenden Script, der mir aus einer Liste mit Rechnernamen die MAC-Adressen über WMI Abfragt. Das ...

Netzwerkgrundlagen
MAC Adresse - Virtuelle MAC Adresse
gelöst Frage von DerHahntrutNetzwerkgrundlagen7 Kommentare

Hallo Verbinde ich ein Wireless Gerät mit dem WLAN so sehe ich auf dem GW in der ARP eine ...

Batch & Shell
Bestimmte Physikalische Adresse bzw. MAC-Adresse in einer Variable speichern?
gelöst Frage von spookypoofBatch & Shell3 Kommentare

Hallo, Ich wollte die Physikalische Adresse bzw. MAC-Adresse in einer Variable speichern. Die Adresse die ich speichern wollte war ...

Batch & Shell
PDFtoText Auslesen und umbenennen
Frage von arbaalBatch & Shell7 Kommentare

Hallo, ich muss ca. 151 PDF Dateien umbenennen und bräuchte da ein wenig Hilfe. Ich mache hier folgendes, lese ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...