nitro99
Goto Top

Ereignisanzeige per Script löschen

Hallo,

ist es möglich das Ereignisprotokoll per Script/Batch-Datei zu löschen?
Es handelt sich um WinXp pro Clients.
Mit PsTools kenne ich mich leider nicht aus.
Hat evtl. jemand eine Lösung oder einen Lösungsansatz?
Vieleicht gibt es ja ein Tool das ich via Batch starten kann!?

Über eine Rückantwort würde ich mich sehr freuen.

Gruß
Nitro99

Content-ID: 55876

Url: https://administrator.de/contentid/55876

Ausgedruckt am: 27.11.2024 um 02:11 Uhr

bastla
bastla 04.04.2007 um 21:43:58 Uhr
Goto Top
Hallo nitro99 und willkommen im Forum!

Vielleicht hilft Dir der folgende Artikel - die Beispielprogramme/-scripts (auch für ein Backup vor dem Löschen) dazu kannst Du hier herunterladen.

Grüße
bastla
nitro99
nitro99 04.04.2007 um 21:54:33 Uhr
Goto Top
Hallo bastla,
danke fuer die Rueckantwort.
Leider kenne ich mich mit VB.Net nicht aus.
Ich suche eigentlich nur eine Batch ode ein VBS Script was mir alle Eintraege in der Ereignisanzeige loescht.

Gruss
nitro99
bastla
bastla 04.04.2007 um 22:15:51 Uhr
Goto Top
Hallo nitro99!

Wenn Du Dir ein paar Sekunden mehr Zeit nimmst, wirst Du sehen, dass es in dem Artikel die Lösungen jeweils auch als VBScript gibt ...

Grüße
bastla
nitro99
nitro99 04.04.2007 um 22:58:20 Uhr
Goto Top
Hallo bastla,

ich hab folgendes versucht:

Again, here is the VBScript version, which would be very similar to the Visual Basic.NET version:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer &
"\root\CIMV2")
Set objShare = objWMIService.Get
("Win32_NTEventlogFile.Name='C:\WINDOWS\system32
\config\AppEvent.Evt'")
Set objInParam = objShare.Methods_("ClearEventlog"). _
inParameters.SpawnInstance_()
Set objOutParams = objWMIService.ExecMethod
("Win32_NTEventlogFile.Name='C:\WINDOWS\system32
\config\AppEvent.Evt'", "ClearEventlog", objInParam)
Wscript.echo "ReturnValue: " & objOutParams.ReturnValue

Ich habe das ganze als .VBS abgespeichert und bekomme dann folgende Fehlermeldung:

Zeile:2
Fehler:Syntaxfehler
Code:800A03EA
Quelle: Kompilierungsfehler in MS VBScript

Gruss
nitro99
Biber
Biber 04.04.2007 um 23:16:54 Uhr
Goto Top
Moin nitro99,

im Moment ist die Codeformatierung wegen eines Releasewechsels noch etwas suboptimal.

Kannst Du die insgesamt 6 Zeilen in Deinem Editor mal auf genau 6 Zeilen bringen?
Du hast ein paar Zeilenumbrueche zuviel.

1strComputer = "."
2Set objWMIService = GetObject("winmgmts:\\" & strComputer &"\root\CIMV2")
3Set objShare = objWMIService.Get("Win32_NTEventlogFile.Name='C:\WINDOWS\system32\config\AppEvent.Evt'")
4Set objInParam = objShare.Methods_("ClearEventlog").inParameters.SpawnInstance_()
5Set objOutParams = objWMIService.ExecMethod("Win32_NTEventlogFile.Name='C:\WINDOWS\system32\config\AppEvent.Evt'", "ClearEventlog", objInParam)
6Wscript.echo "ReturnValue: " & objOutParams.ReturnValue
[behelfsmaessig von 1-6 nummeriert.]

Ach ja, und ueberpruefe ob der %windir%-Pfad bei Dir auch "c:\windows\" ist.. face-wink
Gruss
Biber
bastla
bastla 04.04.2007 um 23:17:07 Uhr
Goto Top
Hallo nitro99!

Es fehlen an einigen Zeilenenden die verbindenden Grundstriche (" _"); so müsste es aber gehen:
strComputer = "."  
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")  
Set objShare = objWMIService.Get("Win32_NTEventlogFile.Name='C:\WINDOWS\system32\config\AppEvent.Evt'")  
Set objInParam = objShare.Methods_("ClearEventlog").inParameters.SpawnInstance_()  
Set objOutParams = objWMIService.ExecMethod("Win32_NTEventlogFile.Name='C:\WINDOWS\system32\config\AppEvent.Evt'", "ClearEventlog", objInParam)  
Wscript.echo "ReturnValue: " & objOutParams.ReturnValue  

Falls Du übrigens außer dem Log "Anwendung" (= "AppEvent") auch noch "System" bzw "Sicherheit" löschen möchtest, müsstest Du dafür "SysEvent" bzw "SecEvent" einsetzen (Zeilen 3 und 5).

Grüße
bastla
nitro99
nitro99 05.04.2007 um 08:46:48 Uhr
Goto Top
Hallo,

danke für die Infos.
das Script ist klasse.
Mit dem Eventlogs "Anwendungen" und "System" funktioniert das ohne Probleme.
Aber mit Sicherheit bekomme ich folgende Fehlermeldung:

Zeile: 5
Zeichen: 1
Fehler:Zugriff verweigert.
Code: 80041003
Quelle: SWbemServicesEx

kann mir vieleicht einer auf die Sprünge helfen face-smile
Gruß
nitro99
Iwan
Iwan 05.04.2007 um 08:47:11 Uhr
Goto Top
ist es damit auch möglich, nur Ereignisse älter als 3 Tage zu löschen?
finde leider Hilfe dazu und bin in VBS nicht so bewandert
Biber
Biber 05.04.2007 um 10:25:10 Uhr
Goto Top
@Iwan
ist es damit auch möglich, nur Ereignisse älter als 3 Tage zu löschen?
Nein - im Design nicht vorgesehen. Ein ClearEventLog ist ganz oder gar nicht.

@nitro99
Aber mit Sicherheit bekomme ich ....Fehler:Zugriff verweigert.

Natürlich. Was hätte diese Sicherheits-Event-Loggerei für einen Sinn, wenn jeder diese Einträge löschen kann?
Und wenn es eine möglichkeit geben sollte, diese Einträge verdampfen zu lassen, dann sollte sie nicht unbedingt hier öffentlich gepostet werden.

Gruss
Biber
nitro99
nitro99 05.04.2007 um 10:30:37 Uhr
Goto Top
@nitro99
> Aber mit Sicherheit bekomme ich
Fehler:Zugriff verweigert.

Natürlich. Was hätte diese
Sicherheits-Event-Loggerei für einen
Sinn, wenn jeder diese Einträge
löschen kann?
Und wenn es eine möglichkeit geben
sollte, diese Einträge verdampfen zu
lassen, dann sollte sie nicht unbedingt hier
öffentlich gepostet werden.

Gruss
Biber


Hallo Biber,

es soll nicht jeder die Einträge löschen.
Nur die Administratoren sollen dies dürfen.

Gruß
Lucky
Biber
Biber 05.04.2007 um 11:03:33 Uhr
Goto Top
Auch die Admins sollten das IMHO nicht automatisch dürfen... aber vielleicht sehe ich das zu eng.

Nun denn, denn ändere oben Zeile 2 und 3 in
Set objWMIService =GetObject("winmgmts:{impersonationLevel=impersonate,(Security,Backup)}").ExecQuery("select * from Win32_NTEventLogFile")

...dann sollte es gehen.

Gruss
Biber
nitro99
nitro99 05.04.2007 um 12:02:53 Uhr
Goto Top

Nun denn, denn ändere oben Zeile 2 und
3 in
> Set objWMIService
=GetObject("winmgmts:{impersonationLevel=impersonate,(Security,Backup)}").ExecQuery("select
  • from Win32_NTEventLogFile")

...dann sollte es gehen.


Hallo,

irgendwie mache ich was falsch...
Leider bekomme ich einen Laufzeitfehler.
Ich habe das Script wie folgt angepasst:

strComputer = "."
Set objWMIService =GetObject("winmgmts:{impersonationLevel=impersonate,(Security,Backup)}").ExecQuery("select * from Win32_NTEventLogFile")
Set objWMIService =GetObject("winmgmts:{impersonationLevel=impersonate,(Security,Backup)}").ExecQuery("select * from Win32_NTEventLogFile")
Set objInParam = objShare.Methods_("ClearEventlog").inParameters.SpawnInstance_()
Set objOutParams = objWMIService.ExecMethod("Win32_NTEventlogFile.Name='C:\WINDOWS\system32\config\AppEvent.Evt'", "ClearEventlog", objInParam)
Wscript.echo "ReturnValue: " & objOutParams.ReturnValue


Zeile 2 und 3 habe ich geändert.

Gruß
Lucky
Biber
Biber 05.04.2007 um 13:40:00 Uhr
Goto Top
Set objWMIService =GetObject("winmgmts:{impersonationLevel=impersonate,(Security,Backup)}").ExecQuery("select * from Win32_NTEventLogFile")  
'objWMIService.ClearEventLog()  

Das sollte reichen. Sehe mit bloßem Auge keinen Tipp/Denkfehler.

Traue mich aber nicht, das an meinem Rechner auszuprobieren (sonst sind ja EventLogs wech face-wink ).
Im Zweifelsfall auf bastla warten.

Gruss
Biber
bastla
bastla 05.04.2007 um 14:07:40 Uhr
Goto Top
Bin ja schon da. face-wink

Vorläufig endgültige Fassung:
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,(Security,Backup)}")  
Set objShare = objWMIService.Get("Win32_NTEventlogFile.Name='C:\WINNT\system32\config\SecEvent.Evt'")  
Set objInParam = objShare.Methods_("ClearEventlog").inParameters.SpawnInstance_()  
Set objOutParams = objWMIService.ExecMethod("Win32_NTEventlogFile.Name='C:\WINNT\system32\config\SecEvent.Evt'", "ClearEventlog", objInParam)  
Hinweis: 4 Zeilen, jede beginnt mit Set, und sowohl in Zeile 2 als auch in Zeile 4 steht SecEvent.Evt.

Grüße
bastla