Jump to content

Wmi Abfrage mit Like %....%


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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 !

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...