Ouch!
Tu aurais dû créer un autre topic, pour un peu ...
J'ai réussi à créer la même erreur, par des moyens pas très académiques (settings de WMI sur l'hystérisis d'objets client), sur une collection de 10 events, mais ça me paraît un peu gros!... J'opte, avant tout, sur le fait que le nombre d'objets événements retournés, via la requête, doit être trop important.
Pourtant ton appel en mode semi-synchrone est bon avec les iFlags optimums juste un petit avis, utilise Eventtype(Entier octet) au lieu de Type(string)
Pour contourner ce problème, essaie par la méthode d'appel Asynchrone ...
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Traitement du log mode asynchrone
'Note: Pour des raisons de sécurité dans ce mode, Ajouter ou Modifier
'[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM] "UnsecAppAccessControlDefault"="1"
'DEB
strcomputer = "Ordprin"
bdone = False
NBEvent=0
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strcomputer & "\root\cimv2" )
Set oSink = WScript.CreateObject("WbemScripting.SWbemSink", "SINK_" )
objWMIService.ExecQueryAsync oSink, "SELECT * FROM Win32_NTLogEvent where logfile = 'system' and sourcename = 'print' and Eventtype = 2 and eventcode = 6","WQL", _
wbemFlagSendStatus
'test
' objWMIService.ExecQueryAsync oSink,"Select * from Win32_NTLogEvent where logfile = 'system' and sourcename = 'DCOM' and Eventtype = 1 and eventcode = 10002", "WQL", &h80
'attend la fin du moulinet!
While Not bdone
WScript.sleep 1000
Wend
'FIN
'Sur événement fin traitement requête asynchrone
Sub SINK_onCompleted(HResult, objErr, objcontext)
if Hresult=0 then _
WScript.Echo "Requête terminée, " & _
nbevent & " évènement(s) retourné(s)"
bdone = True
End Sub
'sur arrivée d'un objet
Sub sink_onObjectReady(obj, objcontext)
nbevent=nbevent+1
'TEST VISUALISATION (à utiliser sur une petite collection, sinon panne de souris!)
Mes= "Journal d'événements '" & obj.LogFile & _
"' de l'ordinateur " & obj.ComputerName & vbcrlf & vbcrlf
Mes= Mes & "Numéro de l'enregistrement ." & vbtab & obj.RecordNumber & vbcrlf
Mes= Mes & "Catégorie . . . . . . . . . . . . ." & vbtab & obj.category & vbcrlf
if obj.CategoryString <> "" then
Mes= Mes & "Nom . . . . . . . . . . . . . . . ." & vbtab & obj.CategoryString & vbcrlf
end if
Mes= Mes & "Généré part. . . . . . . . . . . ." & vbtab & obj.SourceName & vbcrlf
Mes= Mes & "Sous la session. . . . . . . . . ." & vbtab & obj.user & vbcrlf
Mes= Mes & "Survenu le . . . . . . . . . . . ." & vbtab & DateStringToDate (obj.TimeGenerated) & vbcrlf
Mes= Mes & "Inscrit le. . . . . . . . . . . . . ." & vbtab & DateStringToDate (obj.TimeWritten) & vbcrlf
Mes= Mes & "A le Code d'événement . . . ." & vbtab & obj.EventCode & vbcrlf
Mes= Mes & "De type. . . . . . . . . . . . . . ." & vbtab & obj.Type & vbcrlf
Mes= Mes & "Avec le message. . . . . . . . ." & vbtab & obj.Message
WScript.Echo Mes
'FIN TEST VISUALISATION
End Sub
'Petit traitement de datetime exploité pour TEST dans sink_onobjectready
Function DateStringToDate(dtmEventDate)
DateStringToDate = CDate(Mid(dtmEventDate, 5, 2) & "/" & _
Mid(dtmEventDate, 7, 2) & "/" & Left(dtmEventDate, 4) _
& " " & Mid(dtmEventDate, 9, 2) & ":" & _
Mid(dtmEventDate, 11, 2) & ":" & Mid(dtmEventDate, _
13, 2))
End Function