В некоторых случаях требуется удалить на компьютере или сервере все записи в журнале событий Windows. Конечно, очистку системных журналов, можно выполнить и из графической оснастки просмотра событий — Eventvwr.msc (ПКМ по нужному журналу ->Clear Log), однако начиная с Vista, в Windows используется несколько десятков журналов для различных компонентов системы, и очищать их все из консоли Event Viewer будет довольно утомительно. Гораздо проще очистить логи из командной строки: с помощью PowerShell или встроенной утилиты wevtutil.
Очистка журналов событий с помощью PowerShell
В том случае, если у вас установлен PowerShell 3 (по умолчанию уже установлен в Windows 8 / Windows Server 2012 и выше), для получения списка журналов и их очистки можно воспользоваться командлетами Get-EventLog и Clear-EventLog.
Запустите консоль PowerShell с правами администратора и с помощью следующей команды выведите список всех имеющихся в системе классических журналов событий с их максимальными размерами и количеством событий в них.
Get-EventLog –LogName *
Для удаления всех событий из конкретного журнала событий (например, журнала System), воспользуйтесь командой:
Clear-EventLog –LogName System
В результате, все события из этого журнала будут удалены, а в журнале события останется только одно событие EventId 104 с текстом «The System log file was cleared».
Для очистки всех журналов событий нужно бы перенаправить имена журналов в конвейер, однако, к сожалению это запрещено. Поэтому нам придется воспользоваться циклом ForEach:
Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }
Таким образом, будут очищены все классические журналы EventLogs.
Очистка журналов с помощью консольной утилиты WevtUtil.exe
Для работы с событиями в Windows уже довольно давно имеется в наличии мощная утилита командой строки WevtUtil.exe. Ее синтаксис немного сложноват на первый взгляд. Вот, к примеру, что возвращает help утилиты:
Чтобы вывести список зарегистрированных в системе журналов событий, выполните команду:
WevtUtil enum-logs
или более короткий вариант:
WevtUtil el
На экране отобразится довольно внушительный список имеющихся журналов.
WevtUtil el |Measure-Object
. В моем случае, в Windows 10 насчитывается 1053 различных журналов).Можно получить более подробную информацию по конкретному журналу:
WevtUtil gl Setup
Очистка событий в конкретном журнале выполняется так:
WevtUtil cl Setup
Перед очисткой можно создать резервную копию событий в журнале, сохранив их в файл:
WevtUtil cl Setup /bu:SetupLog_Bak.evtx
Чтобы очистить сразу все журналы, можно воспользоваться командлетом Powershell Get–WinEvent для получения всех объектов журналов и Wevtutil.exe для их очистки:
Get-WinEvent -ListLog * -Force | % { Wevtutil.exe cl $_.LogName }
или так
Wevtutil el | ForEach { wevtutil cl “$_”}
Примечание. В нашем примере не удалось очистить 3 журнала из-за ошибки доступа. Стоит попробовать очистить содержимое этих журналов из консоли Event Viewer.
Очистка журналов может быть выполнена и из классической командной строки:
for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"