Configuration des services Windows
Désactivez les services non essentiels pour libérer des ressources système. Attention : cette liste doit être adaptée selon votre environnement et vos besoins spécifiques.
$servicesToDisable = @(
"DiagTrack" # Connected User Experiences and Telemetry
"dmwappushservice" # WAP Push Message Routing Service
"lfsvc" # Geolocation Service
"MapsBroker" # Downloaded Maps Manager
"NetTcpPortSharing" # Net.Tcp Port Sharing Service
"RemoteAccess" # Routing and Remote Access
"RemoteRegistry" # Remote Registry
"SharedAccess" # Internet Connection Sharing (ICS)
"TrkWks" # Distributed Link Tracking Client
"WMPNetworkSvc" # Windows Media Player Network Sharing Service
"WSearch" # Windows Search (si indexation non nécessaire)
"XblAuthManager" # Xbox Live Auth Manager
"XblGameSave" # Xbox Live Game Save
"XboxGipSvc" # Xbox Accessory Management Service
"XboxNetApiSvc" # Xbox Live Networking Service
"Fax" # Fax
"RetailDemo" # Retail Demo Service
"TabletInputService" # Touch Keyboard and Handwriting Panel Service
"PhoneSvc" # Phone Service
"WalletService" # WalletService
"AllJoyn Router Service" # AllJoyn Router Service
"SysMain" # Superfetch/SysMain
)
# Désactiver les services de synchronisation OneDrive (si OneDrive désinstallé)
Get-Service -Name "OneSyncSvc*" -ErrorAction SilentlyContinue | ForEach-Object {
Stop-Service $_.Name -Force -ErrorAction SilentlyContinue
Set-Service $_.Name -StartupType Disabled -ErrorAction SilentlyContinue
}
foreach ($service in $servicesToDisable) {
$svc = Get-Service -Name $service -ErrorAction SilentlyContinue
if ($svc) {
Stop-Service $service -Force -ErrorAction SilentlyContinue
Set-Service $service -StartupType Disabled -ErrorAction SilentlyContinue
Write-Host "Service $service désactivé"
}
}
# Désactiver les tâches planifiées inutiles supplémentaires
$tasksToDisable = @(
"\Microsoft\Windows\AppID\SmartScreenSpecific"
"\Microsoft\Windows\Application Experience\AitAgent"
"\Microsoft\Windows\Application Experience\PcaPatchDbTask"
"\Microsoft\Windows\CloudExperienceHost\CreateObjectTask"
"\Microsoft\Windows\DiskFootprint\Diagnostics"
"\Microsoft\Windows\Location\Notifications"
"\Microsoft\Windows\Location\WindowsActionDialog"
"\Microsoft\Windows\Maintenance\WinSAT"
"\Microsoft\Windows\Maps\MapsToastTask"
"\Microsoft\Windows\Maps\MapsUpdateTask"
"\Microsoft\Windows\Mobile Broadband Accounts\MNO Metadata Parser"
"\Microsoft\Windows\Power Efficiency Diagnostics\AnalyzeSystem"
"\Microsoft\Windows\Retail Demo\CleanupOfflineContent"
"\Microsoft\Windows\Shell\FamilySafetyMonitor"
"\Microsoft\Windows\Shell\FamilySafetyRefresh"
"\Microsoft\Windows\Shell\FamilySafetyUpload"
"\Microsoft\Windows\Windows Media Sharing\UpdateLibrary"
)
foreach ($task in $tasksToDisable) {
Disable-ScheduledTask -TaskName $task -ErrorAction SilentlyContinue
}
⚠️ Important : Ne désactivez JAMAIS les services système critiques comme Windows Update, Windows Defender, Event Log, DHCP Client, DNS Client, ou les services réseau essentiels.
Maintenance du système
Vérification et réparation du magasin de composants
Le magasin de composants Windows (WinSxS) doit être vérifié et nettoyé pour assurer l'intégrité du système :
# Vérifier l'intégrité du magasin de composants
DISM /Online /Cleanup-Image /CheckHealth
# Scanner l'intégrité (plus approfondi)
DISM /Online /Cleanup-Image /ScanHealth
# Réparer les corruptions détectées
DISM /Online /Cleanup-Image /RestoreHealth
# Nettoyer les composants obsolètes
DISM /Online /Cleanup-Image /StartComponentCleanup
# Nettoyage agressif (supprime la possibilité de désinstaller les mises à jour)
DISM /Online /Cleanup-Image /StartComponentCleanup /ResetBase
# Réduire davantage la taille du WinSxS
DISM /Online /Cleanup-Image /SPSuperseded
# Analyser et nettoyer les composants remplacés
DISM /Online /Cleanup-Image /AnalyzeComponentStore
💡 Note : Le nettoyage avec
/ResetBase est particulièrement efficace pour réduire la taille du master mais empêche la désinstallation des mises à jour Windows. À utiliser en connaissance de cause.
Vérification des fichiers système avec SFC
Après le nettoyage DISM, lancez l'outil de vérification des fichiers système :
# Analyser et réparer les fichiers système
sfc /scannow
# Si des problèmes persistent, analysez les logs
findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log > "%userprofile%\Desktop\sfcdetails.txt"
# Vérification avancée avec DISM après SFC
DISM /Online /Cleanup-Image /RestoreHealth
# Relancer SFC si des réparations ont été effectuées par DISM
sfc /scannow
Nettoyage des fichiers temporaires et logs
Supprimez tous les fichiers temporaires, caches et logs inutiles pour réduire la taille du master :
Write-Host "Nettoyage des fichiers temporaires et des journaux..." -ForegroundColor Cyan
# Nettoyer les fichiers temporaires Windows
Remove-Item -Path "$env:windir\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "C:\Users\*\AppData\Local\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue
# Nettoyer la corbeille
Clear-RecycleBin -Force -ErrorAction SilentlyContinue
# Nettoyer le cache DNS
Clear-DnsClientCache
# Nettoyer les journaux d'événements
Function Clear-AllEventLogs {
Write-Host "Énumération et nettoyage de tous les journaux d'événements..." -ForegroundColor Cyan
# Via Get-EventLog (logs classiques)
$classicLogs = Get-EventLog -List
foreach ($log in $classicLogs) {
try {
Clear-EventLog -LogName $log.Log -ErrorAction SilentlyContinue
} catch { }
}
# Via wevtutil (la plus exhaustive)
wevtutil el | ForEach-Object {
wevtutil cl "$_" 2>$null
}
Write-Host "Nettoyage des journaux d'événements terminé." -ForegroundColor Green
}
Clear-AllEventLogs
# Nettoyer le cache Windows Update
Stop-Service wuauserv -Force
Remove-Item -Path "$env:windir\SoftwareDistribution\Download\*" -Recurse -Force -ErrorAction SilentlyContinue
Start-Service wuauserv
# Supprimer les fichiers de vidage mémoire (dump)
Remove-Item -Path "$env:windir\Minidump\*" -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$env:windir\MEMORY.DMP" -Force -ErrorAction SilentlyContinue
# Nettoyer les fichiers prefetch
Remove-Item -Path "$env:windir\Prefetch\*" -Force -ErrorAction SilentlyContinue
# Nettoyer le cache des miniatures
Remove-Item -Path "$env:LocalAppData\Microsoft\Windows\Explorer\thumbcache_*.db" -Force -ErrorAction SilentlyContinue
Write-Host "Nettoyage complet des fichiers temporaires et logs terminé." -ForegroundColor Green
Nettoyage de disque étendu
Utilisez l'outil intégré de nettoyage de disque en mode étendu :
# Nettoyage rapide avec toutes les options
cleanmgr /sageset:65535
cleanmgr /sagerun:65535
Défragmentation et optimisation SSD/HDD
Pour les disques durs traditionnels, effectuez une défragmentation complète. Pour les SSD, lancez plutôt une optimisation TRIM :
# Optimiser tous les lecteurs (TRIM pour SSD, défragmentation pour HDD)
Optimize-Volume -DriveLetter C -Verbose -ReTrim
# Vérifier le type de disque
Get-PhysicalDisk | Select-Object FriendlyName, MediaType, HealthStatus, OperationalStatus
# Défragmentation complète pour HDD uniquement
$diskType = (Get-PhysicalDisk | Where-Object {$_.DeviceID -eq 0}).MediaType
if ($diskType -eq "HDD") {
Optimize-Volume -DriveLetter C -Defrag -Verbose
}
# Analyser la fragmentation avant nettoyage
Optimize-Volume -DriveLetter C -Analyze -Verbose
Vérification et réparation du disque
Avant la capture finale, vérifiez l'intégrité du système de fichiers :
# Vérification rapide du disque
chkdsk C: /scan
# Si des erreurs sont détectées, planifier une vérification complète au redémarrage
chkdsk C: /F /R
# Le système demandera un redémarrage pour effectuer la vérification