Anonim8 Opublikowano 27 Stycznia 2011 Zgłoś Udostępnij Opublikowano 27 Stycznia 2011 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
maggreg Opublikowano 28 Stycznia 2011 Zgłoś Udostępnij Opublikowano 28 Stycznia 2011 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
Bonifacy Opublikowano 28 Stycznia 2011 Zgłoś Udostępnij Opublikowano 28 Stycznia 2011 http://mintywhite.com/windows-7/7maintenance/clear-event-viewer-windows-7-2/ Odnośnik do komentarza
Flavius Opublikowano 28 Stycznia 2011 Zgłoś Udostępnij Opublikowano 28 Stycznia 2011 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
Anonim8 Opublikowano 28 Stycznia 2011 Autor Zgłoś Udostępnij Opublikowano 28 Stycznia 2011 Panowie Jest pięknie. Dzienniczek odzyskał dziewictwo. Miałem angielski zastój umysłowy - wystarczyło wpisac Clean the Even Viewer in W7. Mój Boże, jakie to proste. Odnośnik do komentarza
Bonifacy Opublikowano 28 Stycznia 2011 Zgłoś Udostępnij Opublikowano 28 Stycznia 2011 Panowie wystarczyło wpisac Clean the Even Viewer in W7 No prawie (Clear Event Log) tak też uczyniłem, ale... http://zapodaj.net/981e76d95e74.jpg.html Odnośnik do komentarza
KolegaDudysa Opublikowano 28 Stycznia 2011 Zgłoś Udostępnij Opublikowano 28 Stycznia 2011 A panowie luknijcie w tą metodę ClearEventLog z konsoli wmic dla przetestowania. Sprawdzenie czy metoda jest zaimplementowana: wmic path Win32_NetEventLogFile call ClearEventLog /?:full 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: wmic path Win32_NetEventLogFile WHERE FileName!='*' call ClearEventLog Odnośnik do komentarza
maggreg Opublikowano 28 Stycznia 2011 Zgłoś Udostępnij Opublikowano 28 Stycznia 2011 A panowie luknijcie w tą metodę ClearEventLog z konsoli wmic dla przetestowania. Sprawdzenie czy metoda jest zaimplementowana: wmic path Win32_NetEventLogFile call ClearEventLog /?:full 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: 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
Flavius Opublikowano 28 Stycznia 2011 Zgłoś Udostępnij Opublikowano 28 Stycznia 2011 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" Pokażę ci zresztą coś w PS Jak widać polecenie nie widzi sekcji "Dziennik aplikacji i usług" 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: 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 ...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
wieslaw531 Opublikowano 28 Stycznia 2011 Zgłoś Udostępnij Opublikowano 28 Stycznia 2011 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
Flavius Opublikowano 28 Stycznia 2011 Zgłoś Udostępnij Opublikowano 28 Stycznia 2011 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
KolegaDudysa Opublikowano 28 Stycznia 2011 Zgłoś Udostępnij Opublikowano 28 Stycznia 2011 Flavius a przetestuj to CLEAR-WINEVENT GET-WINEVENT -ListLog * | CLEAR-WINEVENT -Logname $_.Logname Odnośnik do komentarza
Flavius Opublikowano 29 Stycznia 2011 Zgłoś Udostępnij Opublikowano 29 Stycznia 2011 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
Rekomendowane odpowiedzi