ค้นหาเว็บไซต์

วิธีล้างบันทึกเหตุการณ์ของ Windows โดยใช้ PowerShell หรือ Wevtutil


ในบางกรณี จำเป็นต้องลบรายการทั้งหมดออกจากบันทึกเหตุการณ์ของ Windows บนคอมพิวเตอร์หรือเซิร์ฟเวอร์ แน่นอน คุณสามารถล้างบันทึกของระบบได้จากคอนโซลตัวแสดงเหตุการณ์ GUI— Eventvwr.msc (คลิกขวาที่บันทึกที่คุณต้องการล้างและเลือก ล้างบันทึก) อย่างไรก็ตาม เริ่มต้นด้วย Vista Windows ได้ใช้บันทึกหลายสิบรายการสำหรับส่วนประกอบต่างๆ ของระบบ และใช้เวลานานในการล้างบันทึกทั้งหมดใน Event Viewer ด้วยตนเอง การล้างบันทึกจากพรอมต์คำสั่งทำได้ง่ายกว่ามาก โดยใช้ PowerShell หรือเครื่องมือคอนโซลในตัว wevtutil

การล้างบันทึกเหตุการณ์ด้วย PowerShell

หากคุณติดตั้ง PowerShell 3 (โดยค่าเริ่มต้น จะติดตั้งใน Windows 8/Windows Server และสูงกว่า) คุณสามารถใช้ cmdlets Get-EventLog และ Clear-EventLog เพื่อรับ รายการบันทึกเหตุการณ์และล้างข้อมูลเหล่านั้น

เริ่มคอนโซล PowerShell ด้วยสิทธิ์ของผู้ดูแลระบบ และใช้คำสั่งต่อไปนี้แสดงรายการบันทึกเหตุการณ์มาตรฐานทั้งหมดในระบบที่มีขนาดสูงสุดและจำนวนเหตุการณ์

Get-EventLog -LogName *

หากต้องการล้างรายการทั้งหมดจากบันทึกเหตุการณ์เฉพาะ (เช่น บันทึกระบบ) ให้ใช้คำสั่งนี้:

Clear-EventLog -LogName System

ด้วยเหตุนี้ เหตุการณ์ทั้งหมดของบันทึกนี้จะถูกลบ และจะมีเพียงเหตุการณ์เดียวที่มี EventId 104 และข้อความ “The System log file has been cleared“.

หากต้องการล้างบันทึกเหตุการณ์ทั้งหมด คุณต้องเปลี่ยนเส้นทางชื่อบันทึกไปยังไปป์ไลน์ แต่น่าเสียดายที่ห้ามใช้ ดังนั้น เราจะต้องใช้วงจร ForEach:

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

ดังนั้น บันทึกเหตุการณ์มาตรฐานทั้งหมดจะถูกล้าง

การล้างบันทึกโดยใช้เครื่องมือคอนโซล WevtUtil.exe

ในการทำงานกับเหตุการณ์ต่างๆ เป็นเวลานานแล้วที่ Windows มียูทิลิตีพรอมต์คำสั่งที่มีประสิทธิภาพ WevtUtil.exe ไวยากรณ์ของมันซับซ้อนเล็กน้อยสำหรับการมองเห็นครั้งแรก ตัวอย่างเช่น ที่นี่ ส่งคืนความช่วยเหลือของโปรแกรมอรรถประโยชน์:

หากต้องการแสดงรายการบันทึกที่ลงทะเบียนในระบบ ให้รันคำสั่งนี้:

WevtUtil enum-logs

หรือรุ่นที่สั้นกว่า:

WevtUtil el

รายการบันทึกที่น่าประทับใจจะแสดงบนหน้าจอ

หมายเหตุ คุณสามารถนับจำนวนบันทึกที่มีโดยใช้คำสั่งต่อไปนี้: WevtUtil el |Measure-Object ในกรณีของฉันมีบันทึกที่แตกต่างกัน 1,053 รายการใน Windows 10

คุณสามารถรับข้อมูลโดยละเอียดเกี่ยวกับบันทึกเฉพาะได้:

WevtUtil gl Setup

นี่คือวิธีที่คุณล้างเหตุการณ์ในบันทึกเฉพาะ:

WevtUtil cl Setup

ก่อนที่คุณจะล้างเหตุการณ์ คุณสามารถสำรองข้อมูลได้โดยบันทึกเป็นไฟล์:

WevtUtil cl Setup /bu:SetupLog_Bak.evtx

หากต้องการล้างบันทึกทั้งหมดในครั้งเดียว คุณสามารถใช้ PowerShell cmdlet Get-WinEvent เพื่อรับวัตถุบันทึกทั้งหมดและ Wevtutil.exe เพื่อล้างข้อมูลเหล่านี้:

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

หรือ

Wevtutil el | ForEach { wevtutil cl “$_”}

หมายเหตุ ในตัวอย่างของเรา ฉันไม่สามารถล้างบันทึก 3 รายการได้เนื่องจากข้อผิดพลาดในการเข้าถึง มันคุ้มค่าที่จะลองล้างมันโดยใช้ตัวแสดงเหตุการณ์

คุณสามารถล้างบันทึกโดยใช้พรอมต์คำสั่งมาตรฐานได้เช่นกัน:

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

บทความที่เกี่ยวข้อง