So löschen Sie alle Windows-Ereignisprotokollkategorien schnell

Unter Windows 7 öffnen Sie die Ereignisanzeige, um mehrere Kategorien zu durchsuchen. Sie können auch eine einzelne Kategorie löschen, indem Sie auf Protokoll löschen klicken... im rechten Bereich.

Angenommen, ich möchte ALLE Kategorien löschen, soll ich sie einzeln anklicken und löschen?
Es gibt Dutzende von Ihnen. Gibt es einen schnelleren Weg? Vielleicht mit PowerShell?

geben Sie hier die Bildbeschreibung ein geben Sie hier die Bildbeschreibung ein

Author: nixda, 2013-10-06

6 answers

, Versuchen WEvtUtil.exe -

Es gibt keine Möglichkeit über die GUI alle Protokolle auf einmal zu löschen. Zumindest nicht, dass ich je gefunden habe. :)

Schleife und löschen mit Zwischendatei

Hier ist eine Batch-Datei, die WEVTUTIL verwendet.exe, um die Protokolle in einer Textdatei aufzulisten, und verwenden Sie dann diese Textdatei, um jedes der Protokolle zu löschen.

WEVTUTIL EL > .\LOGLIST.TXT
for /f %%a in ( .\LOGLIST.TXT ) do WEVTUTIL CL "%%a"
del .\LOGLIST.TXT
timeout 30

Wenn Sie sich unsicher fühlen, dies alles in einer Batch-Datei zu haben, können Sie dies in zwei separaten Dateien speichern und dann nacheinander ausführen:
(Der "Nuke" Batch wird nur Fehler aus, wenn es keine "Loglist" findet.txt" in seinem aktuellen Verzeichnis.)

Auffüllen-LogList.cmd

@ECHO OFF
REM Source: https://superuser.com/a/655185/389368
WEvtUtil.exe enum-logs > .\LOGLIST.TXT

Nuke-LogList.cmd

@ECHO OFF
REM Source: https://superuser.com/a/655185/389368
for /f %%a in ( .\LOGLIST.TXT ) do WEvtUtil.exe clear-log "%%a"
del .\LOGLIST.TXT
timeout 30

Schleife und direkt löschen

Wie Logman in seiner Antwort darauf hingewiesen hat, kann dies weiter gekürzt werden (und die Notwendigkeit der Zwischentextdatei entfällt), indem etwas wie (%'s double für Batch-Datei) verwendet wird:

for /f %%a in ('WEVTUTIL EL') do WEVTUTIL CL "%%a"
timeout 30

Als Admin Ausführen!

Je nachdem, welchen Weg Sie wählen, stellen Sie sicher, dass Sie "Run Als Administrator".

Einfachste Lösung, die ich gefunden habe. Ich benutze es seit Vista. :)

 18
Author: Ƭᴇcʜιᴇ007,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-03-20 10:17:35

Öffnen Sie die cmd-Eingabeaufforderung oder erstellen Sie ein Batch-Skript und "Als Admin ausführen":

for /f %x in ('wevtutil el') do wevtutil cl "%x"

Powershell-Code zum Löschen aller Ereignisprotokolle:

wevtutil el | Foreach-Object {Write-Host "Clearing $_"; wevtutil cl "$_"}

Oder wählen Sie in einem Skript:

wevtutil.exe cl Analytic
wevtutil.exe cl Application
wevtutil.exe cl DirectShowFilterGraph
wevtutil.exe cl DirectShowPluginControl
wevtutil.exe cl EndpointMapper
wevtutil.exe cl ForwardedEvents
wevtutil.exe cl HardwareEvents
wevtutil.exe cl Internet Explorer
wevtutil.exe cl Key Management Service
wevtutil.exe cl MF_MediaFoundationDeviceProxy
wevtutil.exe cl "Media Center"
wevtutil.exe cl MediaFoundationDeviceProxy
wevtutil.exe cl MediaFoundationPerformance
wevtutil.exe cl MediaFoundationPipeline
wevtutil.exe cl MediaFoundationPlatform
wevtutil.exe cl Microsoft-IE/Diagnostic
wevtutil.exe cl Microsoft-IEFRAME/Diagnostic
wevtutil.exe cl Microsoft-PerfTrack-IEFRAME/Diagnostic
wevtutil.exe cl Microsoft-PerfTrack-MSHTML/Diagnostic

Etc...

Sie können eine vollständige Liste aller Ereigniskategorienamen abrufen, indem Sie Folgendes in eine cmd-Eingabeaufforderung oder Powershell eingeben:

wevtutil el

Weitere Informationen finden Sie unter: MS TechNet. Beispiele:

Ereignisse aus dem Systemprotokoll exportieren nach C:\backup\system0506.evtx:

wevtutil epl System C:\backup\system0506.evtx

Löschen Sie alle Ereignisse aus dem Anwendungsprotokoll, nachdem Sie sie in gespeichert haben C:\admin\backups\a10306.evtx:

wevtutil cl Application /bu:C:\admin\backups\a10306.evtx
 19
Author: Logman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-08-12 14:42:35
  • Wevtutil ist ziemlich langsam, besonders wenn Sie alle Protokolle löschen (einschließlich leerer)

  • Schnellste Lösung, die ich gefunden habe:


ForEach ( $l in ( Get-WinEvent * ).LogName | sort | get-unique ) {[System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog("$l")}


Resul: "16 Ereignisse in 4 Protokollen gelöscht: 0.3684785 Sekunden"

Jeder Teil:

  • Ruft nur Protokolle ab, die Ereignisse enthalten (es gibt doppelte LogNamen)

    ForEach ( $l in ( Get-WinEvent"* ).LogName | sort | get-unique )

  • Jedes löschen one

    - System.Diagnose.Eventing.Leser.EventLogSession]:: GlobalSession.ClearLog( "$l" )

Volle Funktion:

function Clear-EventLogs
{
    Begin
    {
        $t1          = ( Measure-Command -Expression{ $active = ( Get-WinEvent ).LogName } ).TotalSeconds
        $totalEvents = $active.Count
        $active      = $active | Sort | Get-Unique
        $totalLogs   = $active.Count
    }
    Process
    {
        $t2 = ( Measure-Command -Expression{
            ForEach ( $l in $active )
            {
                [System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog( "$l" )
                # ForEach-Object { Wevtutil.exe cl "$l" }
            }
        } ).TotalSeconds
    }
    End     { $t3 = $t1 + $t2; Write-Output "Cleared $totalEvents events in $totalLogs logs: $t3 seconds" }
}

Wenn Sie "Get-WinEvent : Die Daten sind ungültig" sehen, haben Sie das undokumentierte Hartlimit von 256 Protokollen erreicht. Möglicherweise müssen zuerst die Protokolle gefiltert werden. Im Folgenden werden nur die Protokolle mit Ereignissen ausgewählt (Gutschrift auf http://www.powershellish.com/blog/2015/01/19/get-winevent-max-logs/ für die Diagnose ):

$logs = Get-WinEvent -ListLog * | Where-Object {$_.RecordCount} | Select-Object -ExpandProperty LogName
ForEach ( $l in ( Get-WinEvent $logs ).LogName | sort | get-unique ) {[System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog("$l")}
 4
Author: paul bica,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-09-19 03:30:57

Es ist wichtig, die Delim-Option zu verwenden, wenn Sie Leerzeichen in den Namen haben:

WEVTUTIL EL > .\LOGLIST.TXT
for /f "delims=" %%a in ( .\LOGLIST.TXT ) do WEVTUTIL CL "%%a"

Sie können auch einfach alle Ereignisprotokolle deaktivieren, ohne den Ereignisprotokolldienst zu stoppen:

for /f "delims=" %%a in ('WEVTUTIL EL') do WEVTUTIL SL "%%a" /e:false

Natürlich wird dies nur tatsächlich installierte Software-Ereignisse deaktivieren, wenn Sie eine neue Software installieren, wird es die Protokollierung standardmäßig aktiviert haben. Aber gut, dass Sie den Taskplaner laufen lassen können, also tun Sie es einfach jeden Monat ; -)

 3
Author: Xan-Kun Clark-Davis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-04-26 23:14:44

Dies löscht übrigens alle Protokolldateien, die (abhängig von den vorherigen Einstellungen) ziemlich viel Speicherplatz freigeben können

WEVTUTIL EL > .\LOGLIST.TXT
for /f "delims=" %%a in ( .\LOGLIST.TXT ) do WEVTUTIL CL "%%a"
del .\LOGLIST.TXT
timeout 10
 2
Author: Xan-Kun Clark-Davis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-10-08 13:55:03

Ich habe verwendet .bat-Dateien, um es ein wenig einfacher, Log-Dateien zu löschen. Wählen Sie einfach das einfache Skript hier http://winaero.com/blog/how-to-clear-the-windows-event-log-from-the-command-line/

Kopiert von diesem Link.

@echo off
FOR /F "tokens=1,2*" %%V IN ('bcdedit') DO SET adminTest=%%V
IF (%adminTest%)==(Access) goto noAdmin
for /F "tokens=*" %%G in ('wevtutil.exe el') DO (call :do_clear "%%G")
echo.
echo Event Logs have been cleared!
goto theEnd
:do_clear
echo clearing %1
wevtutil.exe cl %1
goto :eof
:noAdmin
echo You must run this script as an Administrator!
echo.
:theEnd
  1. Öffnen Sie den Editor und kopieren Sie diesen Text hinein.

  2. Speichern Sie es als Batch-Datei und geben Sie ihm einen beliebigen Namen, zum Beispiel: ClEvtLog.bat oder ClEvtLog.cmd.

  3. Führen Sie es mit Administratorrechten aus.

 1
Author: Sakari Niittymaa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-11-07 09:05:41