Очищення журналів подій Windows за допомогою PowerShell і wevtutil

У деяких випадках потрібно видалити на комп'ютері або сервері всі записи в журналі подій Windows. Звичайно, очищення системних журналів, можна виконати і з графічної оснащення перегляду подій -  Eventvwr.msc (ПКМ по потрібному журналу -> Clear Log), однак починаючи з Vista, в Windows використовується кілька десятків журналів для різних компонентів системи, і очищати їх все з консолі Event Viewer буде досить утомливо. Набагато простіше очистити логи з командного рядка: за допомогою PowerShell або вбудованої утиліти wevtutil.

зміст:

  • Очищення журналів подій за допомогою PowerShell
  • Очищення журналів за допомогою консольної утиліти WevtUtil.exe

Очищення журналів подій за допомогою 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"