[PowerShell] Supprimer tous les logs qui apparaissent dans l'observateur d'éléments
Posté : ven. 12 juil. 2024 22:01
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
Que fait le script :
Comment s'en servir ?
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
- 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.
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