Komut satırını kullanarak Windows olay günlüklerini nasıl temizleyebilirim?


14

Normalde Bilgisayar Yönetimi konsolunu açabilir, Olay Görüntüleyicisi ek bileşenine gidebilir, Windows Günlükleri klasörünü açabilir, Application/Security/Setup/Systemalt klasöre sağ tıklayabilir, Günlüğü Temizle'yi seçebilir Clearveya veya Save and Cleardüğmesine basarak onaylayabilirsiniz .

Yeterli haklara sahip olduğumda, hiçbir onay isteğini artırmazken komut satırını kullanarak aynı etkiyi nasıl elde edebilirim?

Yanıtlar:


13

Güç kalkanı.

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

Varsayılan, sizden istemek değildir , ancak istenirse -Onay anahtarını sağlayabilirsiniz.

Düzenle:

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

Yorumlara göre, hem Operasyonel hem de İdari günlükleri almalıdır.


Teşekkür ederim, powershell -Command "Clear-Eventlog -Log Application, System"çalışıyor. Ancak Kurulum günlüğü için şöyle diyor The Log name "Setup" does not exist in the computer "localhost".:-( Kurulum günlüğünün nasıl temizleneceği hakkında herhangi bir fikir?
Ivan

Ah, evet, sorun Kurulum günlüğünün teknik olarak diğerlerinden farklı bir günlük olması. Yönetim günlüğü yerine bir İşlem günlüğüdür. EventLogSession .NET sınıfıyla hem Yönetici hem de İşlem günlüklerini temizleyebilirsiniz, ancak Powershell cmdlet'in görünüşe göre bu .NET sınıfını kullanmaması. :( TÜM günlükleri temizlemek için bu komutu deneyin : Get-WinEvent -ListLog * -Force |% {Wevtutil.exe cl $ _. Logname}
Ryan Ries

Daha da iyisi, yıldız işaretini temizlemek istediğiniz günlüklerin listesiyle değiştirin. Uygulama, Kurulum, Güvenlik ... vb.
Ryan Ries

Çalışıyor gibi görünüyor ama "DebugChannel günlüğü silinemedi. İstenen işlem etkin bir doğrudan kanal üzerinden gerçekleştirilemiyor. İstenen işlem gerçekleştirilmeden önce kanalın devre dışı bırakılması gerekir."
Ivan

2
Sistem günlüğünde her zaman bu "Log Clear" olayları olacaktır. Her zaman. Sistem günlüğünü en son temizleseniz bile, sistem günlüğünün kendisi için en az bir günlük silme olayı kalır. Yine başka bir özel durum olduğu için DebugChannel hatası hakkında endişelenmeyin. Yıldız işareti yerine temizlemek istediğiniz olay günlüklerinin belirli adlarını kullanın. Her iki şekilde de çalışır, ancak bir hata görmek istemiyorsanız DebugChannel'i temizlemeye çalışmayın.
Ryan Ries

8

wevtutil enum-logssistemdeki tüm günlükleri numaralandırırken günlükleri wevtutil clear-logtemizler. Sizin durumunuz için:

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

İle temizlerken de yedekleyebilirsiniz wevtutil clear-log System /backup:backup.evtx



2

Aşağıdaki PowerShell , işletimsel / hata ayıklama / kurulum günlükleri de dahil olmak üzere yerel makinedeki tüm olay günlüklerini temizler ("wevtutil" işlemini somutlaştırmadan). Yalnızca bir günlüğü silmek için kodu uygun şekilde değiştirin. Ancak, hata ayıklama günlükleri bir şey tarafından açık tutulur ve bu herhangi bir hata oluşturmaz.

$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

powershell aracılığıyla tüm olay günlüğünü nasıl temizleyeceğinizi, yönetici olarak çalıştırdığınızdan emin olun

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


2
Bu cevabın açıklanması gerekiyor.
kasperd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.