# Nettoyage d'un disque Système
# Maintenance et Nettoyage SQL et Windows
## 1. Base de Données SQL
- **20% est un minimum pour que la BBD soit fonctionnelle et efficace.**
*Une base de données doit toujours disposer d'au moins 20 % d'espace libre pour garantir ses performances et éviter les erreurs.*
- **SQL Management Studio peut nous donner des informations sur la BDD.**
*Utiliser SQL Management Studio pour surveiller l’état de la base de données, identifier les problèmes et optimiser les requêtes.*
- **Les journaux d’évènements doivent être consultés pour voir quel est le problème.**
*Vérifier les logs d’évènements Windows et SQL Server pour détecter les erreurs ou alertes.*
- **Vérification des sauvegardes et des repositories.**
*S'assurer que les sauvegardes sont bien réalisées et que l’espace de stockage est suffisant (vérifier les points de rétention).*
---
## 2. Nettoyage du disque C d’un serveur Windows
### Suppression des fichiers inutiles
- **Nettoyage automatique avec l'outil Disk Cleanup**
```
cleanmgr /sagerun:1
```
*Exécute l’outil de nettoyage de disque avec des options avancées.*
- **Vérification et suppression des fichiers temporaires**
```
del /q /s C:\Windows\Temp\*
del /q /s C:\Users\*\AppData\Local\Temp\*
```
*Efface les fichiers temporaires du système et des utilisateurs.*
- **Suppression des anciens fichiers Windows Update**
```
del /q /s C:\Windows\SoftwareDistribution\Download\*
```
*Libère de l'espace en supprimant les anciennes mises à jour Windows téléchargées.*
- **Suppression des fichiers de logs système**
```
del /q /s C:\Windows\System32\LogFiles\*
del /q /s C:\inetpub\logs\LogFiles\*
```
*Supprime les journaux Windows et IIS pour libérer de l’espace.*
- **Suppression des fichiers de prélecture (Prefetch)**
```
del /q /s C:\Windows\Prefetch\*
```
*Nettoie les fichiers de prélecture pour optimiser les performances.*
### Nettoyage du dossier WinSxS
- **Commande pour réduire la taille de WinSxS**
```
Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase
```
*Supprime les anciennes versions des mises à jour pour récupérer de l’espace.*
📌 [En savoir plus sur WinSxS](https://learn.microsoft.com/fr-fr/windows-hardware/manufacture/desktop/clean-up-the-winsxs-folder?view=windows-11)
---
## 3. Nettoyage avancé avec DISM et SFC
- **Suppression des anciennes mises à jour du système**
```
dism /online /cleanup-image /SPSuperseded
```
*Supprime les anciennes mises à jour du système et libère de l’espace disque.*
- **Nettoyage avancé des composants Windows**
```
dism /online /cleanup-image /StartComponentCleanup
```
*Optimise les composants Windows et réduit l’espace utilisé par le système.*
- **Vérification et réparation des fichiers système corrompus**
```
sfc /scannow
```
*Scanne et répare les fichiers système endommagés.*
- **Vérification des erreurs disque**
```
chkdsk C: /F /R /X
```
*Corrige les erreurs sur le disque C et tente de récupérer les secteurs défectueux.*
📌 [En savoir plus sur ](https://www.notion.so/Pagefile-sys-149e026a424380b5a5e3f1a4a2f48899?pvs=21)`Pagefile.sys`
---
## 4. Automatisation du nettoyage
- **Planification d’un nettoyage automatique**
1. Ouvrir le Planificateur de tâches (`taskschd.msc`)
2. Créer une nouvelle tâche avec `cleanmgr /sagerun:1`
3. Définir une exécution hebdomadaire
*Cela permet de maintenir automatiquement un disque propre et performant.*
# Script et automatisation - nettoyage avancé
### Voici un script PowerShell avancé pour automatiser le nettoyage du disque C:\\ d’un serveur ou d’un PC Windows.
\# Arrêt des services Windows Update pour éviter les conflits
Write-Output "Arrêt du service Windows Update..."
Stop-Service -Name wuauserv -Force
Stop-Service -Name bits -Force
\# Suppression des fichiers temporaires Windows
Write-Output "Suppression des fichiers temporaires..."
Remove-Item -Path "C:\\Windows\\Temp\\\*" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$env:TEMP\\\*" -Recurse -Force -ErrorAction SilentlyContinue
\# Nettoyage des fichiers de mise à jour Windows
Write-Output "Suppression des fichiers de mise à jour..."
Remove-Item -Path "C:\\Windows\\SoftwareDistribution\\Download\\\*" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "C:\\Windows\\Logs\\CBS\\\*" -Recurse -Force -ErrorAction SilentlyContinue
\# Nettoyage des logs système et des fichiers de diagnostic
Write-Output "Suppression des fichiers journaux et diagnostics..."
Remove-Item -Path "C:\\Windows\\System32\\LogFiles\\\*" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "C:\\Windows\\Prefetch\\\*" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "C:\\inetpub\\logs\\LogFiles\\\*" -Recurse -Force -ErrorAction SilentlyContinue
\# Exécution du nettoyage de disque avec les options prédéfinies
Write-Output "Exécution du Nettoyage de disque..."
cleanmgr /sagerun:1
\# Nettoyage avancé des composants Windows
Write-Output "Nettoyage avancé de WinSxS..."
Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase
\# Vérification et réparation des fichiers système corrompus
Write-Output "Exécution de SFC pour réparer les fichiers système..."
sfc /scannow
\# Redémarrage des services Windows Update
Write-Output "Redémarrage des services Windows Update..."
Start-Service -Name wuauserv
Start-Service -Name bits
Write-Output "Nettoyage terminé avec succès !"
### **Explication du script :**
1. **Arrête les services Windows Update** (`wuauserv` et `bits`) pour éviter les conflits.
2. **Supprime les fichiers inutiles** : temporaires, mises à jour téléchargées, logs système et diagnostics.
3. **Exécute `cleanmgr /sagerun:1`** pour un nettoyage personnalisé.
4. **Nettoie le dossier WinSxS** pour récupérer de l’espace disque.
5. **Vérifie et répare les fichiers système corrompus** avec `sfc /scannow`.
6. **Redémarre les services Windows Update**.
---
### **Comment l’exécuter ?**
1. **Ouvrir PowerShell en tant qu'administrateur**.
2. **Copier-coller ce script dans un fichier** `nettoyage.ps1`.
3. **Exécuter le script** avec cette commande :
---
### **Bonus : Automatiser avec le Planificateur de tâches (`taskschd.msc`)**
Si tu veux exécuter ce script automatiquement toutes les semaines :
1. Ouvre **taskschd.msc**.
2. Crée une nouvelle tâche avec **Exécuter avec les privilèges les plus élevés**.
3. Définis une planification (ex. : tous les dimanches à 3h du matin).
4. Mets `"powershell.exe -ExecutionPolicy Bypass -File C:\chemin_du_script\nettoyage.ps1"` dans le champ programme/script.