Назад | Перейти на главную страницу

Как очистить журналы событий Windows с помощью командной строки?

Обычно я могу открыть консоль управления компьютером, перейти к оснастке «Просмотр событий», открыть папку журналов Windows, щелкнуть правой кнопкой мыши Application/Security/Setup/System вложенной папке, выберите Очистить журнал и подтвердите, нажав Clear или Save and Clear кнопка.

Имея достаточно прав, как я могу добиться того же эффекта с помощью командной строки, не вызывая запросов на подтверждение?

Powershell.

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

По умолчанию не , чтобы запросить вас, но вы можете указать переключатель -Confirm, если хотите, чтобы вас спросили.

Редактировать:

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

Согласно комментариям, он должен получить как рабочий, так и административный журналы.

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

На случай, если вы хотите очистить все журналы:

for /f %x in ('wevtutil el') do wevtutil cl "%x"

Извлечен из Вот.

Следующий 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) }
  }
}

вот как очистить весь журнал событий через PowerShell, убедитесь, что вы запускаете его как администратор

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