Попробуйте WEvtUtil.exe
Через графический интерфейс невозможно очистить все журналы одновременно. По крайней мере, не то, что я когда-либо нашел. :)
Цикл и удаление с промежуточным файлом
Вот пакетный файл, который использует WEVTUTIL.exe, чтобы вывести журналы в текстовый файл, а затем использовать этот текстовый файл для удаления каждого из журналов.
WEVTUTIL EL > .\LOGLIST.TXT
for /f %%a in ( .\LOGLIST.TXT ) do WEVTUTIL CL "%%a"
del .\LOGLIST.TXT
timeout 30
Если вам небезопасно иметь все это в одном пакетном файле, вы можете сохранить его в двух отдельных файлах и затем запускать один за другим:
(Пакет «Nuke» просто выдаст ошибку, если не найдет «loglist.txt»). "в его текущем каталоге.)
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
Зацикливание и удаление напрямую
Как указал Логман в своем ответе , это можно еще больше сократить (и устранить необходимость в промежуточном текстовом файле), используя что-то вроде (%'s double для пакетного файла):
for /f %%a in ('WEVTUTIL EL') do WEVTUTIL CL "%%a"
timeout 30
Запуск от имени администратора!
Какой бы путь вы ни выбрали, убедитесь, что вы «Запуск от имени администратора».
Самое простое решение, которое я нашел. Использую его с Vista. :)
wevtutil
в системе.Откройте командную строку или создайте пакетный скрипт и «запустите от имени администратора»:
Код Powershell для очистки всех журналов событий:
или выберите в скрипте:
и т.д...
Вы можете получить полный список всех имен категорий событий, набрав в командной строке или powershell следующую команду:
Более подробную информацию можно найти на MS TechNet . Примеры:
Экспорт событий из системного журнала в C: \ backup \ system0506.evtx:
Очистите все события из журнала приложений после сохранения их в C: \ admin \ backups \ a10306.evtx:
источник
wevtutil работает довольно медленно, особенно когда вы очищаете все журналы (включая пустые)
Самое быстрое решение, которое я придумал:
ForEach ( $l in ( Get-WinEvent * ).LogName | sort | get-unique ) {[System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog("$l")}
Результат: «Очистил 16 событий в 4 логах: 0.3684785 секунд»
Каждая часть:
получает только журналы, содержащие события (будут дубликаты LogNames)
ForEach ($ l in (Get-WinEvent *) .LogName | sort | get-unique)
очистить каждый
System.Diagnostics.Eventing.Reader.EventLogSession] :: GlobalSession.ClearLog ("$ l")
Полная функция:
Если вы видите «Get-WinEvent: данные недействительны», вы достигли недокументированного жесткого ограничения в 256 журналов. Может потребоваться сначала отфильтровать журналы. Следующее выберет только те журналы, в которых есть события (см. Http://www.powershellish.com/blog/2015/01/19/get-winevent-max-logs/ для диагностики):
источник
Важно использовать опцию delim, если в именах есть пробелы:
Вы также можете легко отключить ведение журнала событий, не останавливая службу журнала событий:
Конечно, это отключит только фактически установленные программные события, если вы устанавливаете новое программное обеспечение, по умолчанию будет включено ведение журнала. Но хорошо, что вы можете оставить планировщик заданий включенным, так что делайте это каждый месяц ;-)
источник
WEVTUTIL sl /?
в командной строке.Кстати, это очищает все файлы журнала, которые могут (в зависимости от предыдущих настроек) освободить достаточно места
источник
Я использовал .bat файлы, чтобы немного легче очистить файлы журналов. Просто выбрал простой сценарий здесь
http://winaero.com/blog/how-to-clear-the-windows-event-log-from-the-command-line/
Скопировано по этой ссылке.
Откройте Блокнот и скопируйте этот текст в него.
Сохраните его как пакетный файл и дайте ему любое имя, например: ClEvtLog.bat или ClEvtLog.cmd.
Запустите его с правами администратора.
источник