Vymazání protokolů událostí systému Windows pomocí prostředí PowerShell a wevtutil

V některých případech chcete odstranit všechny položky v protokolu událostí systému Windows na počítači nebo serveru. Čištění systémových protokolů lze samozřejmě provést také pomocí grafického modulu snap-in. -  Eventvwr.msc (RMB na požadovaném protokolu -> Vymazat protokol), ale počínaje systémem Vista používá Windows několik desítek protokolů pro různé součásti systému a jejich vymazání z konzoly Prohlížeč událostí bude docela únavné. Je mnohem snazší vymazat protokoly z příkazového řádku: pomocí PowerShell nebo vestavěného nástroje wevtutil.

Obsah:

  • Vymazání protokolů událostí pomocí PowerShell
  • Vymazání protokolů pomocí obslužného programu konzoly WevtUtil.exe

Vymazání protokolů událostí pomocí PowerShell

Pokud máte nainstalovaný PowerShell 3 (ve výchozím nastavení je již nainstalován ve Windows 8 / Windows Server 2012 a vyšších), můžete pomocí cmdlet získat seznam protokolů a vyčistit je Get-eventlog a Vymazat eventlog.

Spusťte konzolu PowerShell s právy správce a pomocí následujícího příkazu vypište všechny klasické protokoly událostí v systému s jejich maximální velikostí a počtem událostí v nich.

Get-EventLog -LogName *

Chcete-li odstranit všechny události z konkrétního protokolu událostí (například ze systémového protokolu), použijte příkaz:

Clear-EventLog -LogName Systém

V důsledku toho budou všechny události z tohoto protokolu odstraněny a v protokolu událostí zůstane pouze jedna událost EventId 104 s textem “Soubor systémového protokolu byl vymazán".

Chcete-li vymazat všechny protokoly událostí, musíte přesměrovat názvy protokolů do potrubí, bohužel je to však zakázáno. Proto budeme muset použít smyčku ForEach:

Get-EventLog -LogName * | ForEach Clear-EventLog $ _. Log

Tímto způsobem budou vymazány všechny klasické protokoly EventLogs..

Vymazání protokolů pomocí obslužného programu konzoly WevtUtil.exe

Pro práci s událostmi ve Windows je již nějaký čas k dispozici výkonný nástroj příkazového řádku. Wevtutil.exe. Jeho syntax je na první pohled trochu komplikovaná. Zde je například to, co se pomocná pomoc vrací:

Chcete-li zobrazit seznamy událostí zaregistrované v systému, spusťte příkaz:

WevtUtil enum-logs

nebo kratší možnost:

Wevt využívá el

Na obrazovce se zobrazí docela působivý seznam dostupných časopisů..

Poznámka:. Jejich počet můžete vypočítat pomocí příkazu WevtUtil el | Measure Object. V mém případě je v systému Windows 10 1005 různých protokolů).

Podrobnější informace získáte v konkrétním časopise:

WevtUtil gl Setup

Čištění událostí v konkrétním protokolu se provádí následujícím způsobem:

WevtUtil cl Setup

Před čištěním můžete události v protokolu zálohovat jejich uložením do souboru:

WevtUtil cl Setup /bu:SetupLog_Bak.evtx

Chcete-li vymazat všechny protokoly najednou, můžete použít rutinu Powershell Jdi-WinEvent získat všechny objekty protokolu a Wevtutil.exe je vyčistit:

Get-WinEvent -ListLog * -Force | % Wevtutil.exe cl $ _. LogName

nebo tak

Wevtutil el | ForEach wevtutil cl „$ _“

Poznámka:.  V našem příkladu nebylo možné vymazat 3 protokoly z důvodu chyby přístupu. Obsah těchto protokolů je vhodné z konzoly Prohlížeč událostí vymazat..

Čištění protokolu lze také provést z klasické příkazové řádky:

pro / F "tokeny = *"% 1 v ('wevtutil.exe el') DO wevtutil.exe cl "% 1"