सभी विंडोज इवेंट लॉग श्रेणियों को तेजी से कैसे साफ़ करें


17

विंडोज 7 के तहत आप कई श्रेणियों को ब्राउज़ करने के लिए इवेंट व्यूअर खोलें। दाएँ फलक पर Clear Log ... पर क्लिक करके आप एकल श्रेणी भी साफ़ कर सकते हैं ।

मान लें कि मैं सभी श्रेणियों को साफ़ करना चाहता हूं, तो क्या मुझे एक क्लिक करके उन्हें साफ़ करना चाहिए?
इनमें से दर्जनों हैं। क्या कोई तेज़ तरीका है? शायद पॉवरशेल के साथ?

यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें

जवाबों:


18

WEvtUtil.exe आज़माएँ

जीयूआई के माध्यम से एक बार में सभी लॉग को खाली करने का कोई तरीका नहीं है। कम से कम ऐसा नहीं है कि मैंने कभी पाया है। :)

मध्यवर्ती फ़ाइल के साथ लूप और हटाएं

यहां एक बैच फ़ाइल है जो किसी पाठ फ़ाइल में लॉग को सूचीबद्ध करने के लिए WEVTUTIL.exe का उपयोग करता है , और फिर प्रत्येक लॉग को हटाने के लिए उस पाठ फ़ाइल का उपयोग करें।

WEVTUTIL EL > .\LOGLIST.TXT
for /f %%a in ( .\LOGLIST.TXT ) do WEVTUTIL CL "%%a"
del .\LOGLIST.TXT
timeout 30

यदि आपको यह सब एक बैच फ़ाइल में असुरक्षित महसूस हो रहा है, तो आप इसे दो अलग-अलग फ़ाइलों में सहेज सकते हैं और फिर एक के बाद एक चला सकते हैं:
("Nuke" बैच सिर्फ त्रुटि करेगा अगर यह "loglist.txt नहीं लगता है) "इसकी वर्तमान निर्देशिका में।"

पॉप्युलेट-LogList.cmd

@ECHO OFF
REM Source: /superuser//a/655185/389368
WEvtUtil.exe enum-logs > .\LOGLIST.TXT

परमाणु-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

सीधे लूप करें और हटाएं

जैसा कि लोगमैन ने अपने जवाब में कहा , इसे और छोटा किया जा सकता है (और मध्यवर्ती पाठ फ़ाइल की आवश्यकता को समाप्त कर सकते हैं) कुछ इस तरह का उपयोग करके (बैच फ़ाइल के लिए% डबल):

for /f %%a in ('WEVTUTIL EL') do WEVTUTIL CL "%%a"
timeout 30

व्यवस्थापक के रूप में चलाएं!

आप जो भी रास्ता चुनते हैं, आप "रन ऐज एडमिनिस्ट्रेटर" को सुनिश्चित करें।

सबसे आसान समाधान मैंने पाया है। विस्टा के बाद से इसका इस्तेमाल कर रहे हैं। :)


मैं अजगर स्क्रिप्ट या इसी तरह के डब्ल्यूएमआई का उपयोग करने पर विचार कर रहा था - यह बहुत अच्छा उदाहरण है कि कैसे बैच कुछ परिदृश्यों में एक आसान समाधान हो सकता है।
लाइल ब्राउन

सीएमडी आउटपुट + इवेंट व्यूअर ओवरव्यू । व्यवस्थापक के रूप में बैच के माध्यम से अपने दूसरे उदाहरण का उपयोग किया। कुछ श्रेणियों को मंजूरी नहीं दी जा सकती है? अजीब। और पॉवर्सशेल श्रेणी में अभी भी 11.511 घटनाएं हैं? अन्य सभी को साफ लग रहा है
nixda

उद्धरण की कमी से खराब। इसके बारे में खेद है, इसे ठीक किया। :)
ᴇc --ιᴇ007

क्या इस समाधान का उपयोग करना संभव है या Windows XP में @Logman द्वारा प्रस्तावित है? मुझे नहीं लगता कि यह wevtutilसिस्टम में है।
शालाजो डी एरियेरेज़

1
@SopalajodeArrierez "wevtutil" केवल विस्टा और इसके बाद के संस्करण से उपलब्ध है ... Technet.microsoft.com/en-us/library/cc732848.aspx
Logman

19

Cmd प्रॉम्प्ट खोलें या बैच स्क्रिप्ट बनाएं और "एडमिन के रूप में चलाएं":

for /f %x in ('wevtutil el') do wevtutil cl "%x"

सभी ईवेंट लॉग साफ़ करने के लिए पॉवर्सशेल कोड:

wevtutil el | Foreach-Object {Write-Host "Clearing $_"; wevtutil cl "$_"}

या एक स्क्रिप्ट में चुनें और चुनें:

wevtutil.exe cl Analytic
wevtutil.exe cl Application
wevtutil.exe cl DirectShowFilterGraph
wevtutil.exe cl DirectShowPluginControl
wevtutil.exe cl EndpointMapper
wevtutil.exe cl ForwardedEvents
wevtutil.exe cl HardwareEvents
wevtutil.exe cl Internet Explorer
wevtutil.exe cl Key Management Service
wevtutil.exe cl MF_MediaFoundationDeviceProxy
wevtutil.exe cl "Media Center"
wevtutil.exe cl MediaFoundationDeviceProxy
wevtutil.exe cl MediaFoundationPerformance
wevtutil.exe cl MediaFoundationPipeline
wevtutil.exe cl MediaFoundationPlatform
wevtutil.exe cl Microsoft-IE/Diagnostic
wevtutil.exe cl Microsoft-IEFRAME/Diagnostic
wevtutil.exe cl Microsoft-PerfTrack-IEFRAME/Diagnostic
wevtutil.exe cl Microsoft-PerfTrack-MSHTML/Diagnostic

आदि...

आप सभी इवेंट श्रेणी के नामों की पूरी सूची नीचे दिए गए एक cmd प्रॉम्प्ट या पावरशेल टाइप करके प्राप्त कर सकते हैं:

wevtutil el

अधिक जानकारी MS TechNet पर मिल सकती है । उदाहरण:

सिस्टम लॉग से C: \ backup \ system0506.evtx पर इवेंट निर्यात करें:

wevtutil epl System C:\backup\system0506.evtx

C: \ admin \ backups \ a10306.evtx पर सहेजने के बाद अनुप्रयोग लॉग की सभी ईवेंट साफ़ करें

wevtutil cl Application /bu:C:\admin\backups\a10306.evtx

अच्छा छोटा संस्करण।
13c atιᴇ007 18

4
  • wevtutil काफी धीमा है, विशेष रूप से जब आप सभी लॉग को खाली करते हैं (खाली वाले सहित)

  • सबसे तेज समाधान मैं साथ आया:


ForEach ( $l in ( Get-WinEvent * ).LogName | sort | get-unique ) {[System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog("$l")}


रेसुल: "4 लॉग्स में 16 इवेंट्स क्लीयर किए गए: 0.3684785 सेकंड्स"

प्रत्येक भाग:

  • केवल लॉग वाले ईवेंट मिलते हैं (डुप्लिकेट लॉगनेम होंगे)

    ForEach ($ l in (Get-WinEvent *) .LogName | सॉर्ट | गेट-यूनिक)

  • हर एक को साफ करो

    System.Diagnostics.Eventing.Reader.EventLogSession] :: GlobalSession.ClearLog ("$ l")

पूर्ण समारोह:

function Clear-EventLogs
{
    Begin
    {
        $t1          = ( Measure-Command -Expression{ $active = ( Get-WinEvent ).LogName } ).TotalSeconds
        $totalEvents = $active.Count
        $active      = $active | Sort | Get-Unique
        $totalLogs   = $active.Count
    }
    Process
    {
        $t2 = ( Measure-Command -Expression{
            ForEach ( $l in $active )
            {
                [System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog( "$l" )
                # ForEach-Object { Wevtutil.exe cl "$l" }
            }
        } ).TotalSeconds
    }
    End     { $t3 = $t1 + $t2; Write-Output "Cleared $totalEvents events in $totalLogs logs: $t3 seconds" }
}

यदि आप "Get-WinEvent: डेटा अमान्य है" देखते हैं, तो आपने 256 लॉग की अनिर्दिष्ट हार्ड-लिमिट को हिट कर दिया है। पहले लॉग को फ़िल्टर करना आवश्यक हो सकता है। निम्नलिखित केवल उन लॉग का चयन करेंगे जिनके पास ईवेंट हैं ( निदान के लिए http://www.powershellish.com/blog/2015/01/19/get-winevent-max-logs/ पर क्रेडिट ):

$logs = Get-WinEvent -ListLog * | Where-Object {$_.RecordCount} | Select-Object -ExpandProperty LogName
ForEach ( $l in ( Get-WinEvent $logs ).LogName | sort | get-unique ) {[System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog("$l")}

2
मैंने इस फंक्शन को रिटायर कर दिया। 168802 घटनाओं को मिटाने में 271 सेकंड का समय लगा
nixda

1
@ निक्सा: 169,000 घटनाओं के लिए 5 मिनट बहुत तेज़ नहीं है, लेकिन मुझे यकीन नहीं है कि वीतावुतिल एक ही संख्या में घटनाओं के साथ प्रदर्शन करेगा (यह उनमें से कुछ को छोड़ भी सकता है)
पॉल बिका

3

यदि आपके नाम में स्थान है, तो परिसीमन विकल्प का उपयोग करना महत्वपूर्ण है:

WEVTUTIL EL > .\LOGLIST.TXT
for /f "delims=" %%a in ( .\LOGLIST.TXT ) do WEVTUTIL CL "%%a"

इवेंट लॉग सेवा को रोके बिना आप आसानी से सभी ईवेंट लॉगिंग को अक्षम कर सकते हैं:

for /f "delims=" %%a in ('WEVTUTIL EL') do WEVTUTIL SL "%%a" /e:false

बेशक यह केवल वास्तव में स्थापित सॉफ़्टवेयर ईवेंट को अक्षम करेगा, यदि आप एक नया सॉफ़्टवेयर स्थापित करते हैं, तो इसमें डिफ़ॉल्ट रूप से लॉगिंग सक्षम होगी। लेकिन अच्छी बात यह है कि आप कार्य शेड्यूलर को छोड़ सकते हैं, इसलिए इसे हर महीने करें ;-)


मैं आपकी दूसरी कमांड (SL और / e: गलत के साथ) कैसे वापस ला सकता हूं? या मैं डिफ़ॉल्ट रूप से अपने सभी ईवेंट लॉग गुणों को कैसे पुनर्स्थापित कर सकता हूं?
पीटरको

प्रिय पीटरको। मुझे यकीन नहीं है, आप डिफ़ॉल्ट रूप से क्या मतलब है। WEVTUTIL कमांड के लिए प्रलेखन की जाँच करें, उदाहरण के लिए WEVTUTIL sl /?एक कमांड लाइन पर प्रवेश करने का प्रयास करें ।
ज़ान-कुन क्लार्क-डेविस

2

BTW, यह सभी लॉग फ़ाइलों को साफ करता है, जो (पिछली सेटिंग्स के आधार पर) काफी कुछ जगह खाली कर सकता है

WEVTUTIL EL > .\LOGLIST.TXT
for /f "delims=" %%a in ( .\LOGLIST.TXT ) do WEVTUTIL CL "%%a"
del .\LOGLIST.TXT
timeout 10

1

मैंने .bat फ़ाइलों का उपयोग किया है ताकि लॉग फ़ाइलों को साफ़ करना थोड़ा आसान हो जाए। बस यहाँ सरल स्क्रिप्ट उठायाhttp://winaero.com/blog/how-to-clear-the-windows-event-log-from-the-command-line/

उस लिंक से कॉपी किया गया।

@echo off
FOR /F "tokens=1,2*" %%V IN ('bcdedit') DO SET adminTest=%%V
IF (%adminTest%)==(Access) goto noAdmin
for /F "tokens=*" %%G in ('wevtutil.exe el') DO (call :do_clear "%%G")
echo.
echo Event Logs have been cleared!
goto theEnd
:do_clear
echo clearing %1
wevtutil.exe cl %1
goto :eof
:noAdmin
echo You must run this script as an Administrator!
echo.
:theEnd
  1. नोटपैड खोलें और उस टेक्स्ट को उसमें कॉपी-पेस्ट करें।

  2. इसे बैच फ़ाइल के रूप में सहेजें और उदाहरण के लिए इच्छित कोई भी नाम दें: ClEvtLog.bat या ClEvtLog.cmd।

  3. इसे व्यवस्थापक अधिकारों के साथ चलाएं।

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