Skocz do zawartości

Jak wyczyścić Dziennik Zdarzeń?


Anonim8

Rekomendowane odpowiedzi

Pytanie ja w temacie, tylko chodzi mi o to, żeby wyczyścić go do cna. Tak, żeby rejestrował zdarzenia od chwili obecnej. Jak wyczyszcze pojedyncze sekcje (Aplikacja , System itd) to zawsze zostaje ta rubryka ogólna (obrazek). A ja bym chciał poobserwować od początku co się wyprawia z systemem.

I jeszcze jedno, nie tworzą mi się punkty Przywracania. Kiedyś wyłaczyłem i włączyłem ponownie ale system ich nie tworzy. Musze tworzyć ręcznie.

 

 

Odnośnik do komentarza
Pomoc jest darmowa, ale proszę rozważ przekazanie dotacji na utrzymanie serwisu: klik.

Ja do czyszczenia logów używam skryptu w vbs.

Odpowiedni fragment wygląda mniej więcej tak:

 

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,(Backup)}!\\.\root\cimv2")

Set colLogFiles = objWMIService.ExecQuery ("Select * from Win32_NTEventLogFile " & "Where LogFileName='Application'")
For Each objLogfile in colLogFiles
   objLogFile.ClearEventLog()
Next

Set colLogFiles = objWMIService.ExecQuery ("Select * from Win32_NTEventLogFile " & "Where LogFileName='System'")
For Each objLogfile in colLogFiles
   objLogFile.ClearEventLog()
Next

Set colLogFiles = objWMIService.ExecQuery ("Select * from Win32_NTEventLogFile " & "Where LogFileName='Security'")
For Each objLogfile in colLogFiles
   objLogFile.ClearEventLog()
Next

 

pzdr

Odnośnik do komentarza

Skrypt @maggreg czyści tylko 3 sekcje... i wogóle jest problem z wywoływaniem komend WMI dla subsekcji w "Dzienniki aplikacji i usług\Microsoft\Windows" ,propozycja @OldBonifacy jest o wiele dokładniejsza ale jest też niedokładna bo sekcje dziennika zdarzeń mogą się nieco różnić w zależności od wersji systemu i od zainstalowanych programów

 

Ja proponuję coś takiego - plik BAT z takim kodem

 

SC STOP Eventlog

 

del C:\Winodows\System32\winevt\Logs\*

 

SC START Eventlog

 

EDIT

 

Z linku Bonifacego w komentarzach jest też inny skrypt postowany przez który też to robi pernamentnie -oryginał http://www.wilderssecurity.com/showpost.php?p=1613265&postcount=8

Odnośnik do komentarza

A panowie luknijcie w tą metodę ClearEventLog z konsoli wmic dla przetestowania. Sprawdzenie czy metoda jest zaimplementowana:

 

post-24-0-55438200-1296239672_thumb.png

 

wmic path Win32_NetEventLogFile call ClearEventLog /?:full

 

post-24-0-90913000-1296239791_thumb.png

 

Jako że z założenia w wmic metoda ma wyczyścić tylko wybrany dziennik zaczołem się bawić i poszło. Wyczyścił wszystkie:

 

post-24-0-31656800-1296239831_thumb.png

 

wmic path Win32_NetEventLogFile WHERE FileName!='*' call ClearEventLog

Odnośnik do komentarza

A panowie luknijcie w tą metodę ClearEventLog z konsoli wmic dla przetestowania. Sprawdzenie czy metoda jest zaimplementowana:

 

post-24-0-55438200-1296239672_thumb.png

 

wmic path Win32_NetEventLogFile call ClearEventLog /?:full

 

post-24-0-90913000-1296239791_thumb.png

 

Jako że z założenia w wmic metoda ma wyczyścić tylko wybrany dziennik zaczołem się bawić i poszło. Wyczyścił wszystkie:

 

post-24-0-31656800-1296239831_thumb.png

 

wmic path Win32_NetEventLogFile WHERE FileName!='*' call ClearEventLog

 

Oczywiście w VBS też można czyścić kompleksowo:

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,(Backup)}!\\.\root\cimv2")

Set colLogFiles = objWMIService.ExecQuery ("Select * from Win32_NTEventLogFile ")
For Each objLogfile in colLogFiles
   objLogFile.ClearEventLog()
Next

 

Z zastrzeżeniem które podał @Flavius, te metody nie dają dostępu do logów "Dzienniki aplikacji i usług\Microsoft\Windows", nie czyści też logu Setup (ustawienia).

 

 

Ja proponuję coś takiego - plik BAT z takim kodem

 

SC STOP Eventlog

 

del C:\Winodows\System32\winevt\Logs\*

 

SC START Eventlog

 

Będzie problem z usługami zależnymi

 

 

ps

@KolegaDudysa - wkradła ci się literówka do > NetEventLogFile

 

pzdr

Odnośnik do komentarza

A panowie luknijcie w tą metodę ClearEventLog z konsoli wmic dla przetestowania. Sprawdzenie czy metoda jest zaimplementowana:

Eh..już ci kiedyś mówiłem na PW na starych śmieciach (choć dawno) że nie ugryzie to sekcji "Dzienniki aplikacji i usług\Microsoft\Windows" :P

 

Pokażę ci zresztą coś w PS

 

post-510-0-65361200-1296243460_thumb.png

 

Jak widać polecenie nie widzi sekcji "Dziennik aplikacji i usług" :lol:

 

Podejrzewam że zarówno cmdlet w PS jak i VBS odwołują się do komend WMI więc źródło problemu we wszytkich tych metodach jest wspólne

 

Tak na marginesie to znalazłem skrypt w PS który wyczyści dziennik zdarzeń ale tylko względem w/w sekcji:

 

post-510-0-37692700-1296243941_thumb.png

 

Czyli dokładnie co wasze metody

 

Będzie problem z usługami zależnymi

 

Fakt <_< nie zauważyłem tego - mozna go zmodyfikować:

 

SC STOP Schedule
SC STOP Wecsvc
SC STOP Eventlog
del C:\Winodows\System32\winevt\Logs\*
SC START Eventlog
SC START Wecsv
SC START Schedule

 

przez co będzie bardziej brutalny :D ...i jedna ważna uwaga trzeba go uruchomić z poziomu konta SYSTEM bo nie da się z poziomu admina zatrzymać Harmonogramu zadań.Więc skrypt z wevtutil wydaje się najbardziej optymalny...

Odnośnik do komentarza
Więc skrypt z wevtutil wydaje się najbardziej optymalny...

 

Sprawdziłem na W7 Pro x64 i potwierdzam. Wszystkie dzienniki wyczyszczone.

Zawartość katalogu (po czyszczeniu) to wszystkie pliki o jednakowej wielkości 68 kB.

 

EDYTA

 

Domyślam się, że optymalny układ polega na fizycznym usunięciu wszystkich plików. Tylko czy system odtworzy niezbędne?

Odnośnik do komentarza

Domyślam się, że optymalny układ polega na fizycznym usunięciu wszystkich plików. Tylko czy system odtworzy niezbędne?

Odtworzy - czyściłem już pliki dziennika zdarzeń z poziomu WinRE ,ważne tylko aby nie naruszyć struktury katalogów bo inaczej rzeczywiście dziennik nie będzie działał https://www.fixitpc.pl/topic/1753-brak-podgladu-zdarzen-blad-4201-uslugi-dziennika-zdarzen/

 

...ale komenda wevtutil też czyści dziennik - system nawet po wyczyszczeniu zawsze będzie rekonstruował puste pliki dziennika czy by robić taką czy inną metodą...

 

 

Co do PS to jest cmdlet get-winevent który w pełni odczytuje dziennik ale też tylko odczytuje,cmdlet clear-eventlog też nie obsługuje "Dzienniki aplikacji i usług\Microsoft\Windows"

Odnośnik do komentarza

Flavius a przetestuj to CLEAR-WINEVENT

 

GET-WINEVENT -ListLog * | CLEAR-WINEVENT -Logname $_.Logname

 

Rzeczywiście ten cmdlet działa dobrze dla poszczególnych sekcji dziennika,natomiast jest błąd w komendzie czyszczącym cały dziennik,niemniej poszłem dalej i znalazłem modyfikację tego skryptu który będzie już to robił bez żadnych zarzutów

 

Function Global:Clear-Winevent ( $Logname ) {
<#

.SYNOPSIS
Given a specific Logname from the GET-WINEVENT Commandlet
it will clear the Contents of that log

.DESCRIPTION
Cmdlet used to clear the Windows Event logs from Windows 7
Windows Vista, Server 2008 and Server 2008 R2

.EXAMPLE
CLEAR-WINEVENT -Logname Setup

.EXAMPLE
Get-WinEvent -listlog * | foreach { clear-winevent -logname $_.Logname }

Clear all Windows Event Logs

.NOTES
This is a Cmdlet that is not presently in Powershell 2.0
although there IS a GET-WINEVENT Command to list the
Contents of the logs.  You can utilize this instead of
WEVTUTIL.EXE to clear out Logs.  Special thanks to Shay Levy
(@shaylevy on Twitter) for pointing out the needed code

#>

[system.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog("$Logname")

}

 

 

czyli prawidłowa komenda czyszcząca caly dziennik po zaimplentowaniu tego cmdleta będzie następująca

 

Get-WinEvent -listlog * | foreach { clear-winevent -logname $_.Logname }

 

:)

 

źródło http://social.technet.microsoft.com/Forums/en/ITCG/thread/a6f0786b-fe04-4887-aa3a-07f8e5bfa1d9

 

a equivalent dla oficjalnego poradnika z MS Technet do czyszczenia całego dziennika będzie następująca funkcja (oczywiście będzie też dopiero działać po zaimplementowaniu cmdleta clear-winevent)

 

function clear-all-event-logs ($computerName="localhost")
{
get-winevent -computername $computername -listlog * | foreach {clear-winevent -comp $computername -logname $_.Logname}
get-winevent -computername $computername -listlog *
}

 

clear-all-event-logs -comp <nazwa komputera>

 

to tyle jeśli chodzi o PS

Odnośnik do komentarza
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...