Come cancellare i log degli eventi di Windows usando la riga di comando?


14

Normalmente posso aprire la console Gestione computer, andare allo snap-in Visualizzatore eventi, aprire la cartella Registri di Windows, fare clic con il pulsante destro del mouse sulla Application/Security/Setup/Systemsottocartella, scegliere Cancella registro e confermare premendo il pulsante Clearo Save and Clear.

Avendo abbastanza diritti, come posso ottenere lo stesso effetto usando la riga di comando, senza sollevare richieste di conferma?

Risposte:


13

PowerShell.

PS C:\>Clear-Eventlog -Log Application, System

L'impostazione predefinita non è richiesta, ma è possibile fornire l'opzione -Confirm se si desidera ricevere una richiesta.

Modificare:

Get-WinEvent -ListLog Application,Setup,Security -Force | % { Wevtutil.exe cl $_.Logname }

Secondo i commenti, dovrebbero essere presenti sia i registri operativi che quelli amministrativi.


Grazie, powershell -Command "Clear-Eventlog -Log Application, System"funziona. Ma per il registro di installazione dice The Log name "Setup" does not exist in the computer "localhost".:-( Qualche idea su come cancellare il registro di installazione?
Ivan

Ah, sì, il problema è che il registro di installazione è tecnicamente un tipo diverso di registro rispetto agli altri. È un registro operativo anziché un registro amministrativo. È possibile cancellare i registri di amministrazione e operazione con la classe .NET EventLogSession, ma il cmdlet Powershell apparentemente non utilizza quella classe .NET. :( Prova invece questo comando per cancellare TUTTI i log: Get-WinEvent -ListLog * -Force |% {Wevtutil.exe cl $ _. Logname}
Ryan Ries il

Ancora meglio, basta sostituire l'asterisco con l'elenco dei registri che si desidera cancellare. Applicazione, installazione, sicurezza ... ecc.
Ryan Ries il

Sembra funzionare ma dice "Impossibile cancellare il registro DebugChannel. L'operazione richiesta non può essere eseguita su un canale diretto abilitato. Il canale deve essere disabilitato prima di eseguire l'operazione richiesta."
Ivan,

2
Ci saranno sempre quegli eventi "Log Clear" nel registro di sistema. Sempre. Anche se cancelli l'ultimo registro di sistema, ti verrà lasciato almeno un evento di annullamento del registro per il registro di sistema stesso. Non preoccuparti dell'errore DebugChannel, poiché questo è ancora un altro caso speciale. Basta usare i nomi specifici dei registri eventi che si desidera cancellare al posto dell'asterisco. Funziona in entrambi i modi, ma non provare a cancellare DebugChannel se non vuoi vedere un errore.
Ryan Ries il

8

wevtutil enum-logsenumera tutti i registri nel sistema mentre wevtutil clear-logli cancella. Per il tuo caso sarebbe:

wevtutil clear-log Application
wevtutil clear-log Security
wevtutil clear-log Setup
wevtutil clear-log System

È inoltre possibile eseguire il backup durante la cancellazione con wevtutil clear-log System /backup:backup.evtx


2

Nel caso in cui desideri cancellare tutti i registri :

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

Estratto da qui .


2

Il seguente PowerShell cancella tutti i log degli eventi sul computer locale, inclusi i log operativi / di debug / di installazione a livello di codice (senza istanziare il processo "wevtutil"). Per cancellare solo un registro, modificare il codice di conseguenza. Non è perfetto, tuttavia, a volte i log di debug sono tenuti aperti da qualcosa e questo non genera alcun errore.

$EventLogs=Get-WinEvent -Force -ListLog *
$EventSession=new-object System.Diagnostics.Eventing.Reader.EventLogSession
foreach ($Log in $EventLogs) {
  if ($Log.IsEnabled) {
    if ($Log.RecordCount -gt 0) { 
      if ($Log.LogType -eq "Debug") {
        $Log.IsEnabled=$false
        $Log.SaveChanges()
        $EventSession.ClearLog($Log.LogName)
        $Log.IsEnabled=$true
        $Log.SaveChanges()
      }
      else { $EventSession.ClearLog($Log.LogName) }
  }
}

0

questo è come cancellare tutto il registro eventi tramite PowerShell, assicurati di eseguirlo come amministratore

wevtutil el | Foreach-Object {wevtutil cl "$_"}


2
Questa risposta ha bisogno di una spiegazione.
Kasperd,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.