Como limpar os logs de eventos do Windows usando a linha de comando?

12

Normalmente, posso abrir o console de Gerenciamento do Computador, acessar o snap-in Visualizador de Eventos, abrir a pasta Windows Logs, clicar com o botão direito do mouse na subpasta Application/Security/Setup/System , selecionar Limpar Log e confirmar pressionando Clear ou Save and Clear botão.

Tendo direitos suficientes, como posso obter o mesmo efeito usando a linha de comando, sem levantar pedidos de confirmação?

    
por Ivan 25.12.2012 / 23:14

5 respostas

11

Powershell.

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

O padrão é não para avisar, mas você pode fornecer a opção -Confirm se quiser ser avisado.

Editar:

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

De acordo com os comentários, isso deve gerar logs operacionais e administrativos.

    
por 25.12.2012 / 23:20
8

wevtutil enum-logs enumerará todos os logs no sistema, enquanto wevtutil clear-log limpará os logs. Para o seu caso, seria:

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

Você também pode fazer backup ao limpar com wevtutil clear-log System /backup:backup.evtx

    
por 26.12.2012 / 00:00
2

Para o caso, você deseja limpar todos os registros :

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

Extraído de aqui .

    
por 28.04.2014 / 00:18
2

O PowerShell a seguir limpa todos os logs de eventos na máquina local, incluindo os logs operacionais / de depuração / instalação por meio de programação (sem instanciar o processo "wevtutil"). Para limpar apenas um log, modifique o código de acordo. Não é perfeito, no entanto, às vezes, os logs de depuração são mantidos abertos por algo, e isso não gera erros.

$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) }
  }
}
    
por 05.06.2015 / 15:13
0

isto é como limpar todo o log de eventos através do powershell, certifique-se de estar executando-o como administrador

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

    
por 26.05.2015 / 14:20