कमांड लाइन का उपयोग करके विंडोज इवेंट लॉग को कैसे साफ़ करें?


14

आम तौर पर मैं, कंप्यूटर प्रबंधन कंसोल खोल सकते हैं, स्नैप-में ईवेंट व्यूअर के लिए जाने पर Windows लॉग्स फ़ोल्डर राइट-क्लिक खोलने Application/Security/Setup/System, सबफ़ोल्डर दबाकर साफ प्रवेश करें और पुष्टि चुनें Clearया Save and Clearबटन।

पर्याप्त अधिकार होने के बाद, मैं बिना किसी पुष्टिकरण अनुरोध को बढ़ाए कमांड लाइन का उपयोग करके समान प्रभाव कैसे प्राप्त कर सकता हूं?

जवाबों:


13

शक्ति कोशिका।

PS C:\>Clear-Eventlog -Log Application, System

डिफ़ॉल्ट आपको संकेत देने के लिए नहीं है, लेकिन यदि आप संकेत दिया जाना चाहते हैं, तो आप -Confirm स्विच की आपूर्ति कर सकते हैं।

संपादित करें:

Get-WinEvent -ListLog Application,Setup,Security -Force | % { Wevtutil.exe cl $_.Logname }

टिप्पणियों के अनुसार, दोनों को ऑपरेशनल और प्रशासनिक लॉग मिलना चाहिए।


धन्यवाद, powershell -Command "Clear-Eventlog -Log Application, System"काम करता है। लेकिन सेटअप लॉग के लिए यह कहते हैं The Log name "Setup" does not exist in the computer "localhost".:-( सेटअप लॉग को खाली करने के बारे में कोई विचार?
इवान

आह, हाँ, समस्या यह है कि सेटअप लॉग तकनीकी रूप से दूसरों की तुलना में एक अलग तरह का लॉग है। यह एक प्रशासनिक लॉग के बजाय एक ऑपरेशनल लॉग है। आप EventLogSession .NET वर्ग के साथ व्यवस्थापन और संचालन दोनों लॉग को साफ़ कर सकते हैं, लेकिन Powershell cmdlet जाहिरा तौर पर .NET वर्ग का उपयोग नहीं करता है। :( सभी लॉग को खाली करने के बजाय इस कमांड को आज़माएं : Get-WinEvent -ListLog * -Force |% {Wevtutil.exe cl $ _। Logname}
रयान

इससे भी बेहतर, बस तारांकन चिह्न को उन लॉग की सूची से बदल दें जिन्हें आप साफ़ करना चाहते हैं। एप्लिकेशन, सेटअप, सुरक्षा ... आदि
रयान रेज

काम करने लगता है, लेकिन कहते हैं, "डिबगचैनल को लॉग इन करने में विफल रहा। अनुरोधित ऑपरेशन को सक्षम डायरेक्ट चैनल पर नहीं किया जा सकता है। अनुरोध किए गए ऑपरेशन को करने से पहले चैनल को पहले अक्षम होना चाहिए।"
इवान

2
सिस्टम लॉग में हमेशा "लॉग क्लियर" इवेंट होंगे। हमेशा। यहां तक ​​कि अगर आप सिस्टम लॉग को अंतिम रूप से साफ़ करते हैं, तो आपको सिस्टम लॉग के लिए कम से कम एक लॉग स्पष्ट घटना के साथ छोड़ दिया जाएगा। DebugChannel त्रुटि के बारे में चिंता न करें, क्योंकि यह अभी तक एक और विशेष मामला है। केवल उन ईवेंट लॉग के विशिष्ट नामों का उपयोग करें जिन्हें आप तारांकन के बजाय साफ़ करना चाहते हैं। यह किसी भी तरह से काम करता है, लेकिन यदि आप एक त्रुटि नहीं देखना चाहते हैं तो DebugChannel को खाली करने का प्रयास न करें।
रयान रेज़

8

wevtutil enum-logsसिस्टम में सभी लॉग को एन्युमरेट करेगा जबकि wevtutil clear-logलॉग को क्लियर करेगा। आपके मामले के लिए यह होगा:

wevtutil clear-log Application
wevtutil clear-log Security
wevtutil clear-log Setup
wevtutil clear-log System

आप क्लियर करते समय बैकअप भी ले सकते हैं wevtutil clear-log System /backup:backup.evtx



2

निम्नलिखित PowerShell स्थानीय मशीन पर सभी इवेंट लॉग को साफ़ करता है, जिसमें ऑपरेशनल / डीबग / सेटअप लॉग प्रोग्रामेटिक रूप से ("वीटावूटिल" प्रोसेस को इंस्टेंट किए बिना) शामिल है। केवल एक लॉग साफ़ करने के लिए, तदनुसार कोड को संशोधित करें। यह सही नहीं है, हालांकि, कभी-कभी डिबग लॉग को किसी चीज के द्वारा खुला रखा जाता है, और इससे कोई त्रुटि उत्पन्न नहीं होती है।

$EventLogs=Get-WinEvent -Force -ListLog *
$EventSession=new-object System.Diagnostics.Eventing.Reader.EventLogSession
foreach ($Log in $EventLogs) {
  if ($Log.IsEnabled) {
    if ($Log.RecordCount -gt 0) { 
      if ($Log.LogType -eq "Debug") {
        $Log.IsEnabled=$false
        $Log.SaveChanges()
        $EventSession.ClearLog($Log.LogName)
        $Log.IsEnabled=$true
        $Log.SaveChanges()
      }
      else { $EventSession.ClearLog($Log.LogName) }
  }
}

0

यह है कि कैसे पॉवरशेल के माध्यम से सभी ईवेंट लॉग को साफ़ करें, सुनिश्चित करें कि आप इसे व्यवस्थापक के रूप में चला रहे हैं

wevtutil el | Foreach-Object {wevtutil cl "$_"}


2
इस उत्तर को एक स्पष्टीकरण की आवश्यकता है।
कास्परड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.