15 votes

Comment effacer les journaux d'événements de Windows en utilisant la ligne de commande ?

Normalement, je peux ouvrir la console de gestion de l'ordinateur, aller dans le snap-in Event Viewer, ouvrir le dossier Windows Logs, cliquer avec le bouton droit sur Application/Security/Setup/System sous-dossier, choisissez Effacer le journal et confirmez en appuyant sur le bouton Clear o Save and Clear bouton.

Ayant suffisamment de droits, comment puis-je obtenir le même effet en utilisant la ligne de commande, tout en ne soulevant aucune demande de confirmation ?

14voto

Ryan Ries Points 54671

Powershell.

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

La valeur par défaut est pas pour vous inviter, mais vous pouvez fournir le commutateur -Confirm si vous voulez être invité.

Edita:

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

Conformément aux commentaires, cela devrait permettre d'obtenir les journaux opérationnels et administratifs.

8voto

mojo Points 143

wevtutil enum-logs énumérera tous les journaux dans le système tandis que wevtutil clear-log effacera les journaux. Dans votre cas, ce serait :

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

Vous pouvez également sauvegarder pendant le nettoyage avec wevtutil clear-log System /backup:backup.evtx

2voto

K.Qiu Points 1

Pour le cas où vous voulez effacer tous les journaux :

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

Extrait de aquí .

2voto

Le PowerShell suivant efface tous les journaux d'événements sur la machine locale, y compris les journaux de fonctionnement/débogage/séparation de manière programmatique (sans instancier le processus "wevtutil"). Pour effacer un seul journal, modifiez le code en conséquence. Ce n'est pas parfait, cependant, parfois les journaux de débogage sont maintenus ouverts par quelque chose, et cela ne génère aucune erreur.

$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) }
  }
}

0voto

neoghost Points 11

Voici comment effacer tous les journaux d'événements via powershell, assurez-vous que vous l'exécutez en tant qu'administrateur.

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X