Koodie 10 Geschrieben 20. Januar 2005 Melden Teilen Geschrieben 20. Januar 2005 Ich hab ein Problem mit folgendem Codeschnipsel: Die like-funktion geht so nicht, gebe ich einen Wert ein, der ohne Platzhalter % ist, also eine genaue Zeit mit Datum, dann funktioniert es, aber sobald ich es mit like versuche bekomme ich die Fehlermeldung: Zeile 29 Zeichen 2 Fehler 0x80041017 Code 80041017 Quelle: (null) Zeile 29 wäre die FOR Each Zeile, als wäre das Array kaputt oder ähnlich. Hab schon gegoogelt und versucht wie ein verrückter, aber jetzt wende ich mich kapitulierend ans Forum ! Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set colDisks = objWMIService.ExecQuery _ ("Select * from Win32_NTLogEvent Where (EventType=1 OR EventType=2 OR EventType=5) AND TimeWritten like '%" & ownDate &"%'") For Each objDisk in colDisks 'Hier wird das ganze dann in einer Datei gespeichert Next Zitieren Link zu diesem Kommentar
Koodie 10 Geschrieben 20. Januar 2005 Autor Melden Teilen Geschrieben 20. Januar 2005 Hier nochmal der ganze Code bei Interesse, oder zum testen: ''''' Hier zu scannende Pcs eintragen arrayComputer = Array(".") Dim objFileSystem, objOutputFile Dim strOutputFile ' generate a filename base on the script name strOutputFile = "./" & Split(WScript.ScriptName, ".")(0) & ".html" Set objFileSystem = CreateObject("Scripting.fileSystemObject") Set objOutputFile = objFileSystem.CreateTextFile(strOutputFile, TRUE) objOutputFile.WriteLine("<html><body>") ownYear= DatePart ("yyyy", Now) ownMonth=DatePart("m", Now) ownday= DatePart("d", Now) ownDate=right("00" & ownYear, 4) & right("00" & ownMonth, 2) & right("00" & ownDay, 2) For Each strComputer In arrayComputer Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set colDisks = objWMIService.ExecQuery _ ("Select * from Win32_NTLogEvent Where (EventType=1 OR EventType=2 OR EventType=5) AND TimeWritten like '%" & ownDate & "%'") objOutputFile.WriteLine(strComputer & "<br><table border=1>") For Each objDisk in colDisks objOutputFile.WriteLine("<tr><td><img src='" & objDisk.Type & ".jpg'>" & "</td><td>" & objDisk.CategoryString & "</td><td>" & objDisk.EventCode & " </td><td> " & objDisk.EventIdentifier & " </td><td> " & objDisk.Logfile & " </td><td> " & objDisk.Message & " </td><td> " & objDisk.RecordNumber & " </td><td> " & objDisk.SourceName & " </td><td> " & objDisk.TimeWritten & " </td><td> " & objDisk.User & "</td></tr>") Next objOutputFile.WriteLine("</table>") objOutputFile.WriteLine("</body></html>") objOutputFile.Close Set objFileSystem = Nothing WScript.Quit(0) Next Zitieren Link zu diesem Kommentar
Dr.Lecter^ 10 Geschrieben 20. Januar 2005 Melden Teilen Geschrieben 20. Januar 2005 hi! vielleicht hast du aber nur ein problem mit der kombination wildcard + variable!? wenn du die abfrage mit like '%2004%' machst geht es? sollte das der fall sein, hast du schon mal was wo du bohren musst! lg dani Zitieren Link zu diesem Kommentar
Koodie 10 Geschrieben 20. Januar 2005 Autor Melden Teilen Geschrieben 20. Januar 2005 Nein, hatte ich vergessen zu erwähnen, daran scheitert es auch bereits. Ist eine Windows XP-Maschiene SP2, also sollte der Like-Befehl auch unterstützt werden. Zitieren Link zu diesem Kommentar
stanley 10 Geschrieben 20. Januar 2005 Melden Teilen Geschrieben 20. Januar 2005 oder versuche doch das "like" anders zu formulieren, so ähnlich wie in der Doku gefunden: Const CONVERT_TO_LOCAL_TIME = True Set dtmStartDate = CreateObject("WbemScripting.SWbemDateTime") Set dtmEndDate = CreateObject("WbemScripting.SWbemDateTime") DateToCheck = CDate("1/18/2005") dtmStartDate.SetVarDate DateToCheck, CONVERT_TO_LOCAL_TIME dtmEndDate.SetVarDate DateToCheck + 1, CONVERT_TO_LOCAL_TIME ''''' Hier zu scannende Pcs eintragen arrayComputer = Array(".") Dim objFileSystem, objOutputFile Dim strOutputFile ' generate a filename base on the script name strOutputFile = "./" & Split(WScript.ScriptName, ".")(0) & ".html" Set objFileSystem = CreateObject("Scripting.fileSystemObject") Set objOutputFile = objFileSystem.CreateTextFile(strOutputFile, TRUE) objOutputFile.WriteLine("<html><body>") ownYear= DatePart ("yyyy", Now) ownMonth=DatePart("m", Now) ownday= DatePart("d", Now) ' ownDate=right("00" & ownYear, 4) & right("00" & ownMonth, 2) & right("00" & ownDay, 2) ownDate=("%2%") For Each strComputer In arrayComputer Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set colDisks = objWMIService.ExecQuery _ ("Select * from Win32_NTLogEvent Where (EventType=1 OR EventType=2 OR EventType=5) AND TimeWritten >= '" & dtmStartDate & "' and TimeWritten < '" & dtmEndDate & "'") objOutputFile.WriteLine(strComputer & "<br><table border=1>") For Each objDisk in colDisks objOutputFile.WriteLine("<tr><td><img src='" & objDisk.Type & ".jpg'>" & "</td><td>" & objDisk.CategoryString & "</td><td>" & objDisk.EventCode & " </td><td> " & objDisk.EventIdentifier & " </td><td> " & objDisk.Logfile & " </td><td> " & objDisk.Message & " </td><td> " & objDisk.RecordNumber & " </td><td> " & objDisk.SourceName & " </td><td> " & objDisk.TimeWritten & " </td><td> " & objDisk.User & "</td></tr>") Next objOutputFile.WriteLine("</table>") objOutputFile.WriteLine("</body></html>") objOutputFile.Close Set objFileSystem = Nothing WScript.Quit(0) Next Zitieren Link zu diesem Kommentar
Koodie 10 Geschrieben 20. Januar 2005 Autor Melden Teilen Geschrieben 20. Januar 2005 Die Konvertierung zu dem Datumsformat wie es in der WMI-Datenbank steht hat mir gefehlt, vielen Dank, echt super 1A! Auf den Weg bin ich vor lauter like like like garnicht gekommen, es doch mit einfachen Operatoren zu vergleichen ! Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.