bergesel 10 Geschrieben 22. Mai 2008 Melden Teilen Geschrieben 22. Mai 2008 Hallo zusammen ich habe hier ein script was mir alle Eventlog einträge in sql schreibt, danach möchte ich das eventlog leeren. somit habe ich dann nur die eventlog in sql die neu sind. nun sehe ich, dass ich beim leeren des eventlogs application system usw. angeben muss. ich will aber gleich alle leeren ohne noch ein backup zu haben da ich die ja mit dem script in sql habe! wie kann ich nun das leeren aller events machen? strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colRetrievedEvents = objWMIService.ExecQuery _ ("Select * from Win32_NTLogEvent") For Each objEvent in colRetrievedEvents dim Category dim ComputerNameEV dim EventCode dim Message dim RecordNumber dim SourceName dim TimeWritten dim nType dim nUser Category = objEvent.Category ComputerNameEV = objEvent.ComputerName EventCode = objEvent.EventCode Message = objEvent.Message RecordNumber = objEvent.RecordNumber SourceName = objEvent.SourceName TimeWritten = objEvent.TimeWritten nType = objEvent.Type nUser = objEvent.User Set db = CreateObject("ADODB.Connection") db.Open("Provider=SQLOLEDB.1;Data Source=Server; Trusted_Connection=Yes;Initial Catalog=wartung;User ID=sa;Password=xxx;") sql = "use wartung;" db.Execute(sql) 'set rs = sql = "INSERT INTO wartung (Category,ComputerNameEV,Eventcode,Message,RecordNumber,SourceName,TimeWritten,nType,nUser)" sql = sql & "values ('" & Category & "','" & ComputerNameEV & "','" & EventCode & "','" & Message & "','" & RecordNumber & "','" & SourceName & "','" & TimeWritten & "','" & nType & "','" & nUser & "');" db.Execute(sql) Next so schreibt er mal alle events in sql. soweit i.o! nun möchte ich die events auch gleich leeren. mit diesem script was aber bis jetzt nur application leert und nicht alle events. auch macht e noch mit dem eine sicherung was ich nicht möchte. und dies sieht wie folgt aus! strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") ' Obtain an instance of the the class ' using a key property value. Set objShare = objWMIService.Get("Win32_NTEventlogFile.Name='C:\WINDOWS\system32\config\AppEvent.Evt'") ' Obtain an InParameters object specific ' to the method. Set objInParam = objShare.Methods_("ClearEventlog"). _ inParameters.SpawnInstance_() ' Add the input parameters. objInParam.Properties_.Item("ArchiveFileName") = "appeventlog" ' Execute the method and obtain the return status. ' The OutParameters object in objOutParams ' is created by the provider. Set objOutParams = objWMIService.ExecMethod("Win32_NTEventlogFile.Name='C:\WINDOWS\system32\config\AppEvent.Evt'", "ClearEventlog", objInParam) ' List OutParams Wscript.Echo "Out Parameters: " Wscript.echo "ReturnValue: " & objOutParams.ReturnValue kann mir nun jemand sagen wie ich nun mit dem script alle events leeren kann und kein backup erstellt wird? gruss bergesel Zitieren Link zu diesem Kommentar
Lian 2.422 Geschrieben 22. Mai 2008 Melden Teilen Geschrieben 22. Mai 2008 Bist Du sicher, daß Du das willst? Ich kenne das von einem Kunden und ich muss sagen ich finde es nicht supportbar, wenn die Logs leer sind. Wie lange hast Du vor die Events im Log zu belassen? Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 22. Mai 2008 Autor Melden Teilen Geschrieben 22. Mai 2008 ...ich habe ja alle event meldungen im sql vorhanden nach systemnamen abgelegt. dies machen wir 2mal jährlich. dies sind sehr spezielle systeme darum so! und ja ich will es so! :) ah und wen ich sie nicht leeren würde hätte ich die gleichen meldungen in sql wen ich dies wieder durchführe mit den neuen. was mir auch noch egal währe wen er sie leert und immer mit zeitstempel ablegt das währe mir auch recht :) Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 22. Mai 2008 Melden Teilen Geschrieben 22. Mai 2008 Hallo, hmm, dafür ist das freie ms-Tool logparser (Microsoft Download Center) hervorragend geeignet. Damit kannst du direkt alle EventLogs auslesen (auch remote) und über dsn/ODBC in eine Datenbank schreiben. Mit dem Parameter icheckpoint macht er dir das incrementell, ohne dass du Eventlogs leeren musst. Der Logparser schreibt einen Zeitstempel, ab dem er beim nächsten Auslesen weitermacht. Ich geb Lian sehr recht, dass es beim Troubleshooting alles andere als angenehm ist, wenn ein Teil der Events am Ort A, der andere an Ort B gespeichert sind. Ausserdem braucht diese WMI-Classe bei grösseren Logs enorm Serverperformance. Unter Serverhowto habe ich das Bearbeiten von Logdateien mittels Logparser mal bischen genauer beschrieben. Windows Server How-To Guides: Auswertung von Eventlogs mit dem MS-Logparser - ServerHowTo.de Über den Icheckpoint-Parameter informier dich in der *.chm Datei des Logparsers. cu blub Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 23. Mai 2008 Autor Melden Teilen Geschrieben 23. Mai 2008 ok werd mir das mal ansehen :) danke habe da noch eine frage, habe mir das mal durchgelesen betreff in sql speichern. "Ausgabe in eine SQL-Datenbank" o:SQL Ausgabe im SQL-Format Server: Datenbankserver Dsn: DSN-Name ich möchte aber keine ODBC schnittstelle konfig. kann ich das auch mit einem provider machen, sprich kein DSN? Also eine SQLOLEDB? Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 27. Mai 2008 Autor Melden Teilen Geschrieben 27. Mai 2008 ...weis das keiner? :) Zitieren Link zu diesem Kommentar
thumb 10 Geschrieben 27. Mai 2008 Melden Teilen Geschrieben 27. Mai 2008 Hallo Bergesel, hoffe, Dir hilft dies: Exporting Logs to a SQL Database using Logparser in ADSI for IIS Admin Gruß, THUMB Zitieren Link zu diesem Kommentar
bergesel 10 Geschrieben 27. Mai 2008 Autor Melden Teilen Geschrieben 27. Mai 2008 ok das ist ja schon mal was danke 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.