Page 1 sur 1

[PowerShell] Supprimer tous les logs qui apparaissent dans l'observateur d'éléments

Posté : ven. 12 juil. 2024 22:01
par pboulanger
Bonjour à tous,

Voici le premier script de ce nouveau forum :

C'est un script PowerShell qui permet de nettoyer tous les journaux d'événements sur un système Windows.
Le code est commenté et j'ai ajouté une description de l'action de ce script et la manière de l'exécuter.
Il est livré tel quel (testé sur mon Win 11 pro )

Le code

Code : Tout sélectionner

# Vérifier si le script est exécuté en tant qu'administrateur
$principal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
if (-not $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
    # Redémarrer PowerShell en mode administrateur
    Start-Process powershell -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
    exit
}

# Script pour nettoyer tous les journaux d'événements sur un système Windows

# Récupérer la liste de tous les journaux d'événements
$eventLogs = wevtutil el

# Initialiser une liste pour stocker les erreurs
$errors = @()

# Parcourir chaque journal d'événement et le nettoyer
foreach ($log in $eventLogs) {
    try {
        # Nettoyer le journal d'événement
        wevtutil cl $log
        Write-Host "Le journal $log a été nettoyé avec succès." -ForegroundColor Green
    } catch {
        # Stocker l'erreur dans la liste des erreurs
        $errorMessage = "Erreur lors du nettoyage du journal $log : $_"
        $errors += $errorMessage
        Write-Host $errorMessage -ForegroundColor Red
    }
}

# Afficher les erreurs après l'exécution
if ($errors.Count -gt 0) {
    Write-Host "Des erreurs ont été rencontrées lors du nettoyage des journaux d'événements :" -ForegroundColor Yellow
    foreach ($error in $errors) {
        Write-Host $error -ForegroundColor Red
    }
} else {
    Write-Host "Tous les journaux d'événements ont été nettoyés avec succès sans aucune erreur." -ForegroundColor Green
}

# Laisser le message de résultat affiché à l'écran
Write-Host "Appuyez sur une touche pour fermer..." -ForegroundColor Cyan
[System.Console]::ReadKey() | Out-Null
Que fait le script :
  • Vérification des droits administratifs :
    Le script crée un objet WindowsPrincipal pour l'utilisateur actuel et vérifie s'il a les droits d'administrateur.
  • Redémarrage en mode administrateur :
    Si l'utilisateur n'a pas les droits d'administrateur, le script redémarre PowerShell en mode administrateur en utilisant Start-Process avec l'option -Verb RunAs.
    Le script s'arrête ensuite avec exit pour empêcher l'exécution de la suite du script sans les droits nécessaires.
  • Utilise wevtutil el pour obtenir la liste de tous les journaux d'événements.
  • Parcourt chaque journal et utilise wevtutil cl pour le nettoyer.
  • Affiche un message de succès pour chaque journal nettoyé.
  • Capture et affiche, en rouge, toute erreur survenue lors du nettoyage d'un journal spécifique.
En utilisant ce script, si vous l'exécutez sans privilèges d'administrateur, il vous demandera d'entrer les informations d'identification administratives et relancera le script avec les privilèges appropriés.

Comment s'en servir ?
  • Enregistrer le code dans un fichier txt avec l'extension .ps1 par exemple NettoyerJournaux.ps1
  • Clic droit sur l'icône du fichier et commande Exécuter avec PowerShell
  • Un message de résultat apparaît à la fin de l'exécution
  • Appuyez sur n'importe quelle touche pour fermer le script

Re: [Powershell] Supprimer tous les logs qui apparaissent dans l'observateur d'éléments

Posté : ven. 12 juil. 2024 23:09
par acideburn
Merci pour l'exemplarité de forme ( t'avait déja cela en stock :lol: ), je pense que la commu va appréciée ce nouveau forum 👍

Utilité et simplicité feront notre bonheur virtuel en améliorant notre hygiène numérique accessible pour tous, aux builder de faire en sorte que ça reste accessible pour chacun ou pas selon le niveau de compréhension pour l éthique du forum AAZ 😊

Re: [Powershell] Supprimer tous les logs qui apparaissent dans l'observateur d'éléments

Posté : sam. 13 juil. 2024 08:23
par pboulanger
Bonjour,

Effectivement c'est un exemple de ce qui peut se faire facilement ...
La première partie la vérification et le lancement de PowerShell (PwS) en mode admin est réutilisable "AS IS"

Pour la seconde partie, je l'ai faite hier soir ...Elle est tirée de ma panoplie de commandes utiles en PwS .

Bonne journée

Re: [Powershell] Supprimer tous les logs qui apparaissent dans l'observateur d'éléments

Posté : sam. 13 juil. 2024 10:23
par pboulanger
Bonjour,

J'ai apporté au code deux petites modifications oubliées hier soir.
Le code du message initial est corrigé.

  • Ajout d'une coloration rouge pour les erreurs
  • Ajout d'une pause à la fin de l'exécution du script


C'est plus "user friendly" comme cela !!!

Re: [PowerShell] Supprimer tous les logs qui apparaissent dans l'observateur d'éléments

Posté : mar. 16 juil. 2024 07:21
par MyPOV
pboulanger :hai: je te remercie :clap: de manière générale pour ta démarche avec ce que tu as déjà publié et ce que tu publieras. Je les lirai pour prendre connaissance des problèmes qu'ils résolvent, mais il est peu probable que je les utilise tant que je ne me sens pas vraiment concerné ou que je ne dispose pas d'un temps suffisant pour explorer ces questions.