|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
EVENTVIEWER - NTLOGEVENT - EXTRACTION INFORMATIONS DU JOURNAL D'OBSERVATION DES EVÉNEMENTS WINDOWS
Information sur la source
Description
Ce script testé, sous xp, permet d'extraire les informations du Journal d'événements de Windows, à partir du fichier "Win32_NTLogEvent". Dans cet exemple , les informations recueillies sont formatées dans un .txt
Source
- 'Lecture des enregistrements des journaux d'événements de Windows
- 'Source originale : Cedric NANA, LABORATOIRE SUPINFO DES TECHNOLOGIES MICROSOFT (Equipe Recherche)
- 'Publiée le 11/05/2005 http://www.laboratoire-microsoft.org/scripts/14221/
- 'Descriptif de Win32_NTLogEvent
- 'http://www.secretswindows.com/index.php?rubrique=scripts&ssrubrique=WMI&page=./scripts/wmi/win32ntlogevent.htm
- '
- 'Selection sur LogFile="Application" ou "System", Type="erreur" et TimeGenerated <= à 15h
- '
- On Error Resume Next
- 'Création fichier resultat
- Dim resultat : resultat = "D:\Observateur_événements_" & Replace(Date, "/","-") & ".txt"
-
- Dim Fso : Set Fso = CreateObject("Scripting.fileSystemObject")
- Dim Rapport : Set Rapport = Fso.openTextFile(resultat, 2, True)
-
- Dim strComputer, objWMIServices, objWMIObjectSet, objWMIObject
- strComputer = "."
- Set objWMIServices = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
- Set objWMIObjectSet = objWMIServices.ExecQuery _
- ("Select * from Win32_NTLogEvent Where (LogFile='Application' Or LogFile='system') And Type='erreur'")
- For Each objWMIObject In objWMIObjectSet
- Dim MyComputer : MyComputer = objWMIObject.ComputerName
-
- If DateDiff("d", clair(objWMIObject.TimeGenerated), Now) <= 20 Then
- Rapport.writeLine "----------------------------------------------------"
- Rapport.writeLine "Ordinateur: " & objWMIObject.ComputerName
- Rapport.writeLine "Observateur d'événements: " & objWMIObject.LogFile
- Rapport.writeLine "----------------------------------------------------"
- Rapport.writeLine "Type: " & UCase(Left(objWMIObject.Type,1)) & mid(objWMIObject.Type,2)
- Rapport.writeLine "Date: " & clair(objWMIObject.TimeGenerated)
- Rapport.writeLine "Source: " & objWMIObject.SourceName
- Rapport.writeLine "ID évén.: " & objWMIObject.EventCode
- Rapport.writeLine "Utilisateur: " & objWMIObject.User
- Rapport.writeLine "Numéro d'enregistrement: " & objWMIObject.RecordNumber
-
- If Len(objWMIObject.Message) > 56 Then
- Rapport.writeLine "Description: " &vbCrLf& Cesure(objWMIObject.Message, 56)
- Else
- Rapport.writeLine "Description: " &vbCrLf& objWMIObject.Message
- End If
-
- End If
- Next
- Rapport.Close
- Set Rapport = Nothing
- Set fso = Nothing : Set Rapport = Nothing
- Set objWMIObjectSet = Nothing : Set objWMIServices = Nothing
-
- Dim WshShell : Set WshShell = CreateObject("WScript.Shell")
- WshShell.Run resultat
- Set WshShell = Nothing
-
- 'Envoi automatisé du mail
- 'Call EnvoiMail(resultat, MyComputer, Contenu)
- WScript.Quit
-
- Function clair(temps)
- 'tranformation de la date "aaaammjjhhmnss" en jj/mm/aaaa hh:mn
- Dim debut, an, mois, jour, hhmn
- debut = left(temps,8)
- an = left(debut,4)
- mois = mid(debut,5,2)
- jour = right(debut,2)
- hhmn = " " & Mid(temps,9,2) & ":" & Mid(temps,11,2)
- clair = CStr(jour) & "/" & CStr(mois) & "/" & CStr(an) & CStr(hhmn)
- 'MsgBox temps &vbCrLf& clair
- End function
-
- Function Cesure(texte,taillecesure)
- 'Cette function Cesure est à améliorer
- Dim posespace
- Dim textimp
-
- While (Len(texte) > taillecesure)
- 'Vérifier si la césure ne se fait pas juste avant l'espace (apres un mot entier) :
- If Mid(texte, taillecesure + 1, 1) = " " Then
- 'si c'est le cas , ne pas chercher d'espace
- posespace = taillecesure
- Else
- 'sinon, chercher un espace avant le mot en cours
- posespace = InStrRev(Left(texte, taillecesure), " ") - 1
- End If
- 'ajouter le texte tronqué à la sortie de la fonction
- textimp = textimp & Left(texte, posespace) & vbCrLf
- 'tronquer le texte et recommencer la boucle
- texte = Mid(Trim(texte), posespace + 2)
-
- Wend
- 'ajouter le restant du texte
- textimp = textimp & texte
- 'retourner le resultat de la fonction
- Cesure = textimp
- End Function
'Lecture des enregistrements des journaux d'événements de Windows
'Source originale : Cedric NANA, LABORATOIRE SUPINFO DES TECHNOLOGIES MICROSOFT (Equipe Recherche)
'Publiée le 11/05/2005 http://www.laboratoire-microsoft.org/scripts/14221/
'Descriptif de Win32_NTLogEvent
'http://www.secretswindows.com/index.php?rubrique=scripts&ssrubrique=WMI&page=./scripts/wmi/win32ntlogevent.htm
'
'Selection sur LogFile="Application" ou "System", Type="erreur" et TimeGenerated <= à 15h
'
On Error Resume Next
'Création fichier resultat
Dim resultat : resultat = "D:\Observateur_événements_" & Replace(Date, "/","-") & ".txt"
Dim Fso : Set Fso = CreateObject("Scripting.fileSystemObject")
Dim Rapport : Set Rapport = Fso.openTextFile(resultat, 2, True)
Dim strComputer, objWMIServices, objWMIObjectSet, objWMIObject
strComputer = "."
Set objWMIServices = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objWMIObjectSet = objWMIServices.ExecQuery _
("Select * from Win32_NTLogEvent Where (LogFile='Application' Or LogFile='system') And Type='erreur'")
For Each objWMIObject In objWMIObjectSet
Dim MyComputer : MyComputer = objWMIObject.ComputerName
If DateDiff("d", clair(objWMIObject.TimeGenerated), Now) <= 20 Then
Rapport.writeLine "----------------------------------------------------"
Rapport.writeLine "Ordinateur: " & objWMIObject.ComputerName
Rapport.writeLine "Observateur d'événements: " & objWMIObject.LogFile
Rapport.writeLine "----------------------------------------------------"
Rapport.writeLine "Type: " & UCase(Left(objWMIObject.Type,1)) & mid(objWMIObject.Type,2)
Rapport.writeLine "Date: " & clair(objWMIObject.TimeGenerated)
Rapport.writeLine "Source: " & objWMIObject.SourceName
Rapport.writeLine "ID évén.: " & objWMIObject.EventCode
Rapport.writeLine "Utilisateur: " & objWMIObject.User
Rapport.writeLine "Numéro d'enregistrement: " & objWMIObject.RecordNumber
If Len(objWMIObject.Message) > 56 Then
Rapport.writeLine "Description: " &vbCrLf& Cesure(objWMIObject.Message, 56)
Else
Rapport.writeLine "Description: " &vbCrLf& objWMIObject.Message
End If
End If
Next
Rapport.Close
Set Rapport = Nothing
Set fso = Nothing : Set Rapport = Nothing
Set objWMIObjectSet = Nothing : Set objWMIServices = Nothing
Dim WshShell : Set WshShell = CreateObject("WScript.Shell")
WshShell.Run resultat
Set WshShell = Nothing
'Envoi automatisé du mail
'Call EnvoiMail(resultat, MyComputer, Contenu)
WScript.Quit
Function clair(temps)
'tranformation de la date "aaaammjjhhmnss" en jj/mm/aaaa hh:mn
Dim debut, an, mois, jour, hhmn
debut = left(temps,8)
an = left(debut,4)
mois = mid(debut,5,2)
jour = right(debut,2)
hhmn = " " & Mid(temps,9,2) & ":" & Mid(temps,11,2)
clair = CStr(jour) & "/" & CStr(mois) & "/" & CStr(an) & CStr(hhmn)
'MsgBox temps &vbCrLf& clair
End function
Function Cesure(texte,taillecesure)
'Cette function Cesure est à améliorer
Dim posespace
Dim textimp
While (Len(texte) > taillecesure)
'Vérifier si la césure ne se fait pas juste avant l'espace (apres un mot entier) :
If Mid(texte, taillecesure + 1, 1) = " " Then
'si c'est le cas , ne pas chercher d'espace
posespace = taillecesure
Else
'sinon, chercher un espace avant le mot en cours
posespace = InStrRev(Left(texte, taillecesure), " ") - 1
End If
'ajouter le texte tronqué à la sortie de la fonction
textimp = textimp & Left(texte, posespace) & vbCrLf
'tronquer le texte et recommencer la boucle
texte = Mid(Trim(texte), posespace + 2)
Wend
'ajouter le restant du texte
textimp = textimp & texte
'retourner le resultat de la fonction
Cesure = textimp
End Function
Conclusion
En cours d'écriture: - - résultat dans un fichier html pour pièce jointe de mail; - résultat dans un fichier xls pour pièce jointe de mail; - afficher le résultat .txt dans le corps du mail; - afficher le résultat .htm dans le corps du mail; La Query ne demande qu'à être développée. jean-marc
Historique
- 28 novembre 2006 12:42:02 :
- Correction de la Quéry (bug sur certains xp)
Ajout d'une function Césure pour la description des messages (à améliorer)
Ce script, en vbs, ne necéssite aucune install de composant.
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
VBS et WMI [ par TheEwook ]
Bonjour, Voilà j'arrive bien à ajouter une passerelle en WMI sur une interface. Par contre le seule problème que j'ai c'est que je n'arrive pas à l'en
VBS, WMI & groupes locaux [ par rodrigos ]
Salut!Je suis en train de me mettre au vbscript et j'aimerai savoir comment on peut obtenir l'ensemble des utilisateurs d'un groupe local: par exemple
soucis entre des API WMI HTML et VBS [ par barba ]
Quel beau melange!Cela necessite une petite explication.mon probleme: j'ai une page html qui execute un code vbs (il cree un repertoire, copie 4 fichi
[VBS] wmi user courant [ par remifalcon ]
BonjourJe cherche désespérément la librairie wmi que me donnerait l'utilisateur (local ou non) en cours de session d'une machineJ'ai essayé caSet objs
script en vbs pour harmoniser les contacts de tous les utilisateurs d'un serveur exchnage [ par amydo ]
Salut à tousAidez moi les amis, c'est urgent.j'ai besoin d'un script en vbs qui permettra d'harmoniser les contacts de tous les utilisateurs d'un serv
[VBS] éxécution parrallèle - simultanée [ par remifalcon ]
Bonjour à tousVoila je cherche à effectuer plusieurs actions en même temps dans un vbsCe vbs liste 1000 pc, les ping, et sile ping est ok il fait autr
Planification d'un script VBS avec passage d'arguments [ par DavidWhitewater ]
Bonjour, j'essai de planifier un script VBS en lui passant des arguments. Dans le planificateur de taches de Windows Server 2003, champs 'Executer', j
[VBS] lister programmes [ par remifalcon ]
Bonjour à tousOui je sais cette question a été posée j'ai trouvé pas mal de sources sur le net mais aucune ne me convientJe souhaite lister les progra
condition "if" dans vbs , help... [ par Tyrell2 ]
Bonjour,
[VBS] récupérer plusieurs ligne d'un select [ par remifalcon ]
Bonjour, Fan de VBS, je voudrai récupérer le résultat d'un select Je n'arrive à récupérer que le premier résultat de la requête, comment récupérer tou
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|