Coba WEvtUtil.exe
Tidak ada cara melalui GUI untuk menghapus semua log sekaligus. Setidaknya bukan yang pernah saya temukan. :)
Ulangi dan hapus dengan file perantara
Berikut adalah file batch yang menggunakan WEVTUTIL.exe untuk mendaftar log ke file teks, dan kemudian menggunakan file teks itu untuk menghapus masing-masing log.
WEVTUTIL EL > .\LOGLIST.TXT
for /f %%a in ( .\LOGLIST.TXT ) do WEVTUTIL CL "%%a"
del .\LOGLIST.TXT
timeout 30
Jika Anda merasa tidak aman memiliki ini semua dalam satu file batch, maka Anda dapat menyimpan ini ke dua file terpisah dan kemudian menjalankan satu demi satu:
(Batch "Nuke" hanya akan kesalahan jika tidak menemukan "loglist.txt "di direktori saat ini.)
Populate-LogList.cmd
@ECHO OFF
REM Source: /superuser//a/655185/389368
WEvtUtil.exe enum-logs > .\LOGLIST.TXT
Nuke-LogList.cmd
@ECHO OFF
REM Source: /superuser//a/655185/389368
for /f %%a in ( .\LOGLIST.TXT ) do WEvtUtil.exe clear-log "%%a"
del .\LOGLIST.TXT
timeout 30
Ulangi dan hapus secara langsung
Seperti yang ditunjukkan oleh Logman dalam jawabannya , ini dapat dipersingkat lebih lanjut (dan menghilangkan kebutuhan untuk file teks perantara) dengan menggunakan sesuatu seperti (%'s double untuk file batch):
for /f %%a in ('WEVTUTIL EL') do WEVTUTIL CL "%%a"
timeout 30
Jalankan sebagai Admin!
Apa pun cara yang Anda pilih, pastikan Anda "Run As Administrator".
Solusi termudah yang saya temukan. Sudah menggunakannya sejak Vista. :)
wevtutil
di sistem.Buka cmd prompt atau buat skrip batch dan "jalankan sebagai admin":
Kode Powershell untuk menghapus semua log peristiwa:
atau pilih dan pilih dalam skrip:
dll ...
Anda bisa mendapatkan daftar lengkap semua nama kategori acara dengan mengetik berikut ini di cmd prompt atau PowerShell:
Informasi lebih lanjut dapat ditemukan di MS TechNet . Contoh:
Mengekspor acara dari Log sistem ke C: \ backup \ system0506.evtx:
Hapus semua peristiwa dari log Aplikasi setelah menyimpannya ke C: \ admin \ backups a10306.evtx:
sumber
wevtutil sangat lambat, khususnya ketika Anda menghapus semua log (termasuk yang kosong)
solusi tercepat yang saya temukan:
ForEach ( $l in ( Get-WinEvent * ).LogName | sort | get-unique ) {[System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog("$l")}
Resul: "Membersihkan 16 acara dalam 4 log: 0,3684785 detik"
Setiap bagian:
hanya mendapat log yang berisi acara (akan ada duplikat LogNames)
ForEach ($ l dalam (Get-WinEvent *) .LogName | sort | get-unique)
bersihkan masing-masing
System.Diagnostics.Eventing.Reader.EventLogSession] :: GlobalSession.ClearLog ("$ l")
Fungsi penuh:
Jika Anda melihat "Get-WinEvent: Data tidak valid", Anda telah mencapai batas maksimum 256 log yang tidak terdokumentasi. Mungkin perlu menyaring log terlebih dahulu. Berikut ini akan memilih hanya log yang memiliki acara (kredit untuk http://www.powershellish.com/blog/2015/01/19/get-winevent-max-logs/ untuk diagnosis):
sumber
Penting untuk menggunakan opsi pembatas jika Anda memiliki spasi di namanya:
Anda juga dapat dengan mudah menonaktifkan semua pencatatan peristiwa tanpa menghentikan layanan log peristiwa:
Tentu saja ini hanya akan menonaktifkan aktivitas perangkat lunak yang benar-benar diinstal, jika Anda menginstal perangkat lunak baru, itu akan mengaktifkan pencatatan secara default. Tapi bagusnya Anda bisa membiarkan Penjadwal Tugas tetap bekerja, jadi lakukan saja setiap bulan ;-)
sumber
WEVTUTIL sl /?
di baris perintah.BTW, ini menghapus semua file Log, yang dapat (tergantung pada pengaturan sebelumnya) membebaskan beberapa ruang
sumber
Saya telah menggunakan file .bat untuk membuatnya sedikit lebih mudah untuk menghapus file log. Cukup pilih skrip sederhana di sini
http://winaero.com/blog/how-to-clear-the-windows-event-log-from-the-command-line/
Disalin dari tautan itu.
Buka Notepad dan salin-tempel teks itu ke dalamnya.
Simpan sebagai file batch dan berikan nama yang Anda inginkan misalnya: ClEvtLog.bat atau ClEvtLog.cmd.
Jalankan dengan hak admin.
sumber