Tente WEvtUtil.exe
Na GUI, não há como limpar todos os logs de uma só vez. Pelo menos não que eu já tenha encontrado. :)
Fazer loop e excluir com arquivo intermediário
Aqui está um arquivo em lotes que usa WEVTUTIL.exe para listar os logs em um arquivo de texto e, em seguida, use esse arquivo de texto para excluir cada um dos logs.
WEVTUTIL EL > .\LOGLIST.TXT
for /f %%a in ( .\LOGLIST.TXT ) do WEVTUTIL CL "%%a"
del .\LOGLIST.TXT
timeout 30
Se você se sentir inseguro com tudo isso em um arquivo em lotes, poderá salvá-lo em dois arquivos separados e depois executar um após o outro:
(O lote "Nuke" apresentará um erro se não encontrar um "loglist.txt "em seu diretório atual.)
Populate-LogList.cmd
@ECHO OFF
REM Source: /superuser//a/655185/389368
WEvtUtil.exe enum-logs > .\LOGLIST.TXT
Nuke-LogList.cmd
@ECHO OFF
REM Source: /superuser//a/655185/389368
for /f %%a in ( .\LOGLIST.TXT ) do WEvtUtil.exe clear-log "%%a"
del .\LOGLIST.TXT
timeout 30
Repetir e excluir diretamente
Como Logman apontou em sua resposta , isso pode ser ainda mais reduzido (e eliminar a necessidade do arquivo de texto intermediário) usando algo como (% 's double for batch file):
for /f %%a in ('WEVTUTIL EL') do WEVTUTIL CL "%%a"
timeout 30
Executar como administrador!
Qualquer que seja a maneira que você escolher, certifique-se de "Executar como administrador".
Solução mais fácil que encontrei. Utilizado desde o Vista. :)
wevtutil
no sistema.Abra o prompt do cmd ou crie um script em lote e "execute como administrador":
Código do Powershell para limpar todos os logs de eventos:
ou escolha e escolha em um script:
etc ...
Você pode obter uma lista completa de todos os nomes de categorias de eventos, digitando o seguinte em um prompt de cmd ou PowerShell:
Mais informações podem ser encontradas no MS TechNet . Exemplos:
Exporte eventos do log do sistema para C: \ backup \ system0506.evtx:
Limpe todos os eventos do log do aplicativo após salvá-los em C: \ admin \ backups \ a10306.evtx:
fonte
O wevtutil é bastante lento, especialmente quando você limpa todos os logs (incluindo os vazios)
solução mais rápida que eu vim com:
ForEach ( $l in ( Get-WinEvent * ).LogName | sort | get-unique ) {[System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog("$l")}
Resultado: "Limpou 16 eventos em 4 logs: 0,3684785 segundos"
Cada parte:
obtém apenas logs contendo eventos (haverá nomes de log duplicados)
ForEach ($ l em (Get-WinEvent *) .LogName | sort | get-unique)
limpar cada um
System.Diagnostics.Eventing.Reader.EventLogSession] :: GlobalSession.ClearLog ("$ l")
Função completa:
Se vir "Get-WinEvent: os dados são inválidos", você atingiu o limite não documentado de 256 logs. Pode ser necessário filtrar os logs primeiro. A seguir, serão selecionados apenas os logs que possuem eventos (crédito para http://www.powershellish.com/blog/2015/01/19/get-winevent-max-logs/ para o diagnóstico):
fonte
É importante usar a opção delim se você tiver espaços nos nomes:
Você também pode desativar facilmente todo o log de eventos sem interromper o serviço de log de eventos:
Obviamente, isso desativará apenas os eventos de software realmente instalados; se você instalar um novo software, ele terá o log ativado por padrão. Mas é bom deixar o Agendador de tarefas em execução; basta fazê-lo todos os meses ;-)
fonte
WEVTUTIL sl /?
em uma linha de comando.BTW, isso limpa todos os arquivos de log, que podem (dependendo das configurações anteriores) liberar bastante espaço
fonte
Usei os arquivos .bat para facilitar um pouco a limpeza dos arquivos de log. Apenas peguei o script simples aqui
http://winaero.com/blog/how-to-clear-the-windows-event-log-from-the-command-line/
Copiado desse link.
Abra o Bloco de notas e copie e cole o texto nele.
Salve-o como um arquivo em lotes e atribua o nome que desejar, por exemplo: ClEvtLog.bat ou ClEvtLog.cmd.
Execute-o com direitos de administrador.
fonte