Як очистити журнали подій Windows за допомогою командного рядка?


14

Зазвичай я можу відкрити консоль управління комп'ютером, перейти до оснастки Переглядача подій, відкрити папку Журнали Windows, клацнути правою кнопкою миші на Application/Security/Setup/Systemпапку, вибрати Очистити журнал і підтвердити натисканням кнопки Clearабо Save and Clear.

Маючи достатньо прав, як я можу досягти такого ж ефекту за допомогою командного рядка, не викликаючи запитів на підтвердження?

Відповіді:


13

Powershell.

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

За замовчуванням НЕ підказувати вам, але ви можете поставити -Confirm перемикач , якщо ви хочете , щоб запит.

Редагувати:

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

Відповідно до коментарів, вони повинні мати як Оперативні, так і Адміністративні журнали.


Дякую, powershell -Command "Clear-Eventlog -Log Application, System"працює. Але для журналу настройки написано The Log name "Setup" does not exist in the computer "localhost".:-( Будь-які ідеї, як очистити журнал налаштування?
Іван

Ага, так, проблема полягає в тому, що журнал установки є технічно іншим журналом, ніж інші. Це операційний журнал замість адміністративного журналу. Ви можете очистити як журнали адміністратора, так і операції за допомогою .NET класу EventLogSession, але цей командлет Powershell, очевидно, не використовує цей клас .NET. :( Спробуйте замість цього очистити ВСІ журнали: Get-WinEvent -ListLog * -Force |% {Wevtutil.exe cl $ _. Logname}
Ryan Ries

Ще краще, просто замініть зірочку на список журналів, які ви хочете очистити. Застосування, налаштування, безпека ... тощо
Ryan Ries

Здається, працює, але говорить: "Не вдалося очистити журнал DebugChannel. Запрошена операція не може бути виконана через включений прямий канал. Перш за все, канал повинен бути відключений перед виконанням запитуваної операції."
Іван

2
У системному журналі завжди будуть такі події "Очистити журнал". Завжди. Навіть якщо ви очистите системний журнал останнім, вам залишиться щонайменше один журнал очищення події для самого системного журналу. Не турбуйтеся про помилку DebugChannel, оскільки це ще один особливий випадок. Просто використовуйте конкретні назви журналів подій, які ви хочете очистити, а не зірочкою. Це працює в будь-якому випадку, але не намагайтеся очистити DebugChannel, якщо ви не хочете бачити помилку.
Ryan Ries

8

wevtutil enum-logsперерахує всі журнали в системі, а wevtutil clear-logочистить журнали. Для вашого випадку це було б:

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

Ви також можете створити резервну копію під час очищення за допомогою wevtutil clear-log System /backup:backup.evtx



2

Наступний PowerShell очищає всі журнали подій на локальній машині, включаючи журнали операційного / налагодження / налаштування програмно (без інстанції процесу "wevtutil"). Щоб очистити лише один журнал, змініть код відповідно. Це не ідеально, проте іноді журнали налагодження чимось відкриваються, і це не створює помилок.

$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) }
  }
}

0

ось як очистити весь журнал подій через паттерн повноважень, переконайтеся, що ви запускаєте його як адміністратор

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


2
Ця відповідь потребує пояснення.
kasperd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.