Lire Spécifiques Journal Des Événements Windows Événement
Je suis en train de travailler sur un programme et ont besoin de ot de savoir comment je pourrais lire une entrée spécifique pour le Journal des Événements Windows basé sur un nombre Record, ce script va déjà avoir. Ci-dessous le code que j'ai été de travailler avec, mais je ne veux pas faire une boucle par tous les événements jusqu'à ce que je trouve celui que je suis à la recherche pour. Des idées?
import win32evtlog
server = 'localhost' # name of the target computer to get event logs
logtype = 'System'
hand = win32evtlog.OpenEventLog(server,logtype)
flags = win32evtlog.EVENTLOG_BACKWARDS_READ|win32evtlog.EVENTLOG_SEQUENTIAL_READ
total = win32evtlog.GetNumberOfEventLogRecords(hand)
while True:
events = win32evtlog.ReadEventLog(hand, flags,0)
if events:
for event in events:
if event.EventID == "27035":
print 'Event Category:', event.EventCategory
print 'Time Generated:', event.TimeGenerated
print 'Source Name:', event.SourceName
print 'Event ID:', event.EventID
print 'Event Type:', event.EventType
data = event.StringInserts
if data:
print 'Event Data:'
for msg in data:
print msg
break
N'oubliez pas d'appeler
win32evtlog.CloseEventLog(hand)
lorsque vous avez terminé.
OriginalL'auteur Zac Brown | 2012-06-27
Vous devez vous connecter pour publier un commentaire.
Pas! Il n'y a pas de fonctions qui vous permettent d'obtenir l'événement en se basant sur l'id de l'événement.
Référence: La journalisation des événements de fonctions
Seule autre méthode de d'intérêt est la lecture de l'événement le plus ancien.
Vous aurez pour itérer sur les résultats de toute façon et que votre approche est correcte 🙂
Vous ne pouvez changer la forme de votre approche comme ci-dessous mais ce n'est pas nécessaire.
C'est juste de la même manière que vous le faites, mais plus succinct
Je ne sais pas quel est le statut était à l'époque que cette réponse a été posté, mais ce n'est plus correcte (voir ma réponse ci-dessous - si vous pouvez écrire une requête WMI, vous pouvez l'interroger).
Id de l'événement est un nombre entier. Il ne sera jamais correspondre à la chaîne "27035"
OriginalL'auteur pyfunc
Je réalise que c'est une vieille question, mais je suis tombé sur elle, et si je l'ai fait, d'autres peuvent aussi.
Vous pouvez également écrire des requêtes personnalisées, qui vous permettent de requête par toute de la WMI paramètres, vous pouvez créer un script (y compris l'ID d'événement). Il a également l'avantage de vous laisser sortir et de la poussière sur tous ceux VBS requêtes WMI. J'ai fait usage de cette fonctionnalité plus fréquemment que tout autre. Pour des exemples, voir:
Voici un exemple de requête pour un événement spécifique dans le journal d'Application. Je n'ai pas de chair, mais vous pouvez également créer un WMI temps et de chaîne de requête pour les événements entre ou depuis la date spécifique/fois.
Merci pour la suggestion - je suis allé de l'avant et terminé tout ça.
OriginalL'auteur Doug R.
Il y a une bibliothèque python maintenant (python 3) qui permettra de faire ce que vous demandez appelé winevt. Ce que vous cherchez peut être fait via le suivant:
OriginalL'auteur Owl Owl