Skocz do zawartości
14 stycznia 2020 - Koniec wsparcia Microsoftu dla Windows 7 ×

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
  W dniu 28.01.2011 o 18:38, KolegaDudysa napisał(a):

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).

 

 

  W dniu 28.01.2011 o 14:24, Flavius napisał(a):

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
  W dniu 28.01.2011 o 18:38, KolegaDudysa napisał(a):

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

 

  Cytat

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
  Cytat
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
  W dniu 28.01.2011 o 20:42, wieslaw531 napisał(a):

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
  W dniu 28.01.2011 o 22:58, KolegaDudysa napisał(a):

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ę...