Czyszczenie dzienników zdarzeń Windows za pomocą PowerShell i wevtutil

W niektórych przypadkach chcesz usunąć wszystkie wpisy w dzienniku zdarzeń systemu Windows na komputerze lub serwerze. Oczywiście czyszczenie dzienników systemowych można również wykonać za pomocą graficznej przystawki zdarzeń -  Eventvwr.msc (RMB na żądanym dzienniku -> Wyczyść dziennik), jednak począwszy od Visty, Windows używa kilkudziesięciu dzienników dla różnych składników systemu, a ich usunięcie z konsoli Event Viewer będzie dość żmudne. Znacznie łatwiej jest wyczyścić dzienniki z wiersza polecenia: za pomocą programu PowerShell lub wbudowanego narzędzia wevtutil.

Treść

  • Czyszczenie dzienników zdarzeń za pomocą PowerShell
  • Czyszczenie dzienników za pomocą narzędzia konsoli WevtUtil.exe

Czyszczenie dzienników zdarzeń za pomocą PowerShell

Jeśli masz zainstalowany program PowerShell 3 (domyślnie jest już zainstalowany w systemie Windows 8 / Windows Server 2012 i nowszych), możesz użyć poleceń cmdlet, aby uzyskać listę dzienników i je wyczyścić Pobierz dziennik zdarzeń i Wyczyść dziennik zdarzeń.

Uruchom konsolę PowerShell z uprawnieniami administratora i użyj następującego polecenia, aby wyświetlić listę wszystkich klasycznych dzienników zdarzeń w systemie z ich maksymalnymi rozmiarami i liczbą zdarzeń w nich zawartych.

Get-EventLog -LogName *

Aby usunąć wszystkie zdarzenia z określonego dziennika zdarzeń (na przykład dziennika systemu), użyj polecenia:

System Clear-EventLog -LogName

W rezultacie wszystkie zdarzenia z tego dziennika zostaną usunięte, a tylko jedno zdarzenie EventId pozostanie w dzienniku zdarzeń 104 z tekstem „Plik dziennika systemu został wyczyszczony„.

Aby wyczyścić wszystkie dzienniki zdarzeń, należy przekierować nazwy dzienników do potoku, jednak niestety jest to zabronione. Dlatego będziemy musieli użyć pętli ForEach:

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

W ten sposób wszystkie klasyczne dzienniki EventLogs zostaną usunięte..

Czyszczenie dzienników za pomocą narzędzia konsoli WevtUtil.exe

Do pracy ze zdarzeniami w systemie Windows od dłuższego czasu dostępne jest potężne narzędzie wiersza poleceń. Wevtutil.exe. Na pierwszy rzut oka jego składnia jest nieco skomplikowana. Oto, na przykład, co zwraca pomoc narzędzia:

Aby wyświetlić listę dzienników zdarzeń zarejestrowanych w systemie, uruchom polecenie:

WevtUtil enum-logs

lub krótsza opcja:

Wevt util el

Na ekranie pojawi się całkiem imponująca lista dostępnych czasopism..

Uwaga. Możesz obliczyć ich liczbę za pomocą polecenia WevtUtil el | Measure-Object. W moim przypadku w systemie Windows 10 jest 1053 różnych dzienników).

Możesz uzyskać bardziej szczegółowe informacje na temat konkretnego magazynu:

Konfiguracja WevtUtil gl

Czyszczenie zdarzeń w określonym dzienniku odbywa się w następujący sposób:

WevtUtil cl Setup

Przed czyszczeniem możesz utworzyć kopię zapasową zdarzeń w dzienniku, zapisując je w pliku:

WevtUtil cl Setup /bu:SetupLog_Bak.evtx

Aby wyczyścić wszystkie dzienniki jednocześnie, możesz użyć polecenia cmdlet programu Powershell Zdobądź-WinEvent aby uzyskać wszystkie obiekty dziennika i Wevtutil.exe w celu ich wyczyszczenia:

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

lub tak

Wevtutil el | ForEach wevtutil cl „$ _”

Uwaga.  W naszym przykładzie nie można usunąć 3 dzienników z powodu błędu dostępu. Warto spróbować wyczyścić zawartość tych dzienników z konsoli Podglądu zdarzeń..

Czyszczenie dziennika można również wykonać z klasycznego wiersza poleceń:

for / F "tokens = *"% 1 in ('wevtutil.exe el') DO wevtutil.exe cl "% 1"