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-Key: 55876

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

Printed on: April 25, 2024 at 07:04 o'clock

Member: bastla
bastla Apr 04, 2007 at 19:43:58 (UTC)
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
Member: nitro99
nitro99 Apr 04, 2007 at 19:54:33 (UTC)
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
Member: bastla
bastla Apr 04, 2007 at 20:15:51 (UTC)
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
Member: nitro99
nitro99 Apr 04, 2007 at 20:58:20 (UTC)
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
Member: Biber
Biber Apr 04, 2007 at 21:16:54 (UTC)
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
Member: bastla
bastla Apr 04, 2007 at 21:17:07 (UTC)
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
Member: nitro99
nitro99 Apr 05, 2007 at 06:46:48 (UTC)
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
Member: Iwan
Iwan Apr 05, 2007 at 06:47:11 (UTC)
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
Member: Biber
Biber Apr 05, 2007 at 08:25:10 (UTC)
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
Member: nitro99
nitro99 Apr 05, 2007 at 08:30:37 (UTC)
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
Member: Biber
Biber Apr 05, 2007 at 09:03:33 (UTC)
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
Member: nitro99
nitro99 Apr 05, 2007 at 10:02:53 (UTC)
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
Member: Biber
Biber Apr 05, 2007 at 11:40:00 (UTC)
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
Member: bastla
bastla Apr 05, 2007 at 12:07:40 (UTC)
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