[PowerShell] WinAutoCheck_AAZ.ps1 : Un outil automatisé de vérification et de réparation système Windows
Posté : dim. 19 janv. 2025 12:25
Bonjour à tous
Ce script PowerShell, intitulé WinAutoCheck_AAZ, est conçu pour automatiser la vérification et la réparation des fichiers système sous Windows (SFC et DSIM), tout en offrant une interface utilisateur conviviale et lisible.
Le code commenté
Ce que fait ce script
Ce script PowerShell, intitulé WinAutoCheck_AAZ, est conçu pour automatiser la vérification et la réparation des fichiers système sous Windows (SFC et DSIM), tout en offrant une interface utilisateur conviviale et lisible.
Le code commenté
Code : Tout sélectionner
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
# Nom du logiciel : WinAutoCheck_AAZ
# Auteur : PiB pour TEAM-AAZ
# Version : 1.0.0.a (Janvier 2025)
# Codage : UTF 8
# --------------------------------------
Write-Host "Nom du logiciel : WinAutoCheck_AAZ" -ForegroundColor Cyan
Write-Host "Auteur : PiB pour TEAM-AAZ" -ForegroundColor Cyan
Write-Host "Version : 1.0.0.a (Janvier 2025)" -ForegroundColor Cyan
Write-Host "--------------------------------------" -ForegroundColor Cyan
# Vérification si le script est exécuté avec les droits administrateur
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Write-Host "Ce script nécessite des privilèges administrateurs pour fonctionner." -ForegroundColor Red
Write-Host "Relance du script en mode administrateur..." -ForegroundColor Cyan
# Préparation du script pour une réexécution en mode administrateur
$currentScript = $MyInvocation.MyCommand.Definition
Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$currentScript`"" -Verb RunAs
exit
}
Write-Host ""
Write-Host "Script exécuté en tant qu'administrateur.
" -ForegroundColor Green
# Vérification et activation de l'exécution des scripts si nécessaire
Write-Host "Vérification de la stratégie d'exécution PowerShell...
" -ForegroundColor Cyan
$currentPolicy = Get-ExecutionPolicy
if ($currentPolicy -ne 'RemoteSigned' -and $currentPolicy -ne 'Unrestricted') {
Write-Host "La stratégie actuelle est : $currentPolicy.
" -ForegroundColor Yellow
Write-Host "Modification en cours pour permettre l'exécution des scripts locaux signés (RemoteSigned).
" -ForegroundColor Cyan
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned -Force
Write-Host ""
Write-Host "Stratégie d'exécution modifiée avec succès : RemoteSigned." -ForegroundColor Green
} else {
Write-Host ""
Write-Host "La stratégie d'exécution actuelle permet déjà l'exécution des scripts : $currentPolicy." -ForegroundColor Green
}
# Étape 1 : Vérification et réparation des fichiers système avec SFC
Write-Host ""
Write-Host "Exécution de la commande SFC /scannow..." -ForegroundColor Cyan
sfc /scannow
# Vérification du résultat
if ($LASTEXITCODE -eq 0) {
# Write-Host "SFC n'a détecté aucune violation d'intégrité dans les fichiers système." -ForegroundColor Green
Write-Host ""
} else {
Write-Host "?? SFC a détecté des erreurs et a tenté des réparations. Passage à l'étape suivante avec DISM..." -ForegroundColor Yellow
Write-Host ""
# Étape 2 : Réparation de l'image Windows avec DISM
Write-Host "Vérification de l'état de l'image avec DISM..." -ForegroundColor Cyan
dism /Online /Cleanup-Image /CheckHealth
Write-Host "Analyse des erreurs potentielles avec DISM..." -ForegroundColor Cyan
Write-Host ""
dism /Online /Cleanup-Image /ScanHealth
Write-Host "Tentative de réparation de l'image Windows avec DISM..." -ForegroundColor Cyan
Write-Host ""
dism /Online /Cleanup-Image /RestoreHealth
# Résumé
if ($LASTEXITCODE -eq 0) {
Write-Host "L'image Windows a été réparée avec succès." -ForegroundColor Green
Write-Host ""
} else {
Write-Host "Impossible de réparer l'image Windows. Une intervention manuelle peut être nécessaire." -ForegroundColor Red
Write-Host ""
}
}
# Rétablissement de la stratégie d'exécution initiale
Write-Host ""
Write-Host "Rétablissement de la stratégie d'exécution initiale (si nécessaire)..." -ForegroundColor Cyan
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy $currentPolicy -Force
Write-Host ""
Write-Host "Stratégie d'exécution rétablie : $currentPolicy." -ForegroundColor Green
Write-Host ""
Write-Host "Script terminé avec succès." -ForegroundColor Cyan
Write-Host ""
#Write-Host "Appuyez sur une touche pour continuer..." -ForegroundColor Yellow
pause
- Vérification des droits administratifs :
- Le script s'assure qu'il est exécuté avec les privilèges administratifs nécessaires. Si ce n'est pas le cas, il relance automatiquement le script en mode administrateur.
- Vérification de la stratégie d'exécution PowerShell :
- Le script vérifie la stratégie d'exécution actuelle et la modifie temporairement si nécessaire pour permettre l'exécution de scripts locaux signés (RemoteSigned).
- Analyse et réparation des fichiers système avec SFC et DISM :
- Lance la commande sfc /scannow pour rechercher et corriger les fichiers système corrompus.
=> Si des erreurs sont détectées, il passe automatiquement à des réparations approfondies avec l'outil DISM (/CheckHealth, /ScanHealth, et /RestoreHealth).
- Lance la commande sfc /scannow pour rechercher et corriger les fichiers système corrompus.
- Rétablissement de la stratégie d'exécution initiale :
- Une fois les vérifications terminées, le script restaure la stratégie d'exécution PowerShell initiale pour ne pas impacter d'autres scripts.
- Interface utilisateur claire :
- Affiche des messages lisibles dans la console, incluant des statuts en couleurs pour indiquer le déroulement de chaque étape.
- Pause en fin d'exécution :
- Ajoute une pause à la fin pour permettre à l'utilisateur de lire les résultats avant que la console ne se ferme.
- Enregistrer le code dans un fichier txt avec l'extension .ps1 par exemple WinAutoCheck_AAZ.ps1
- Clic droit sur l'icône du fichier et commande Exécuter avec PowerShell
- Des messages de confirmation apparaissent au fur et à mesure de l'exécution du script
- Le script se ferme à la fin des opérations.