Pensez à défragmenter vos serveurs et simplifiez vous la vie avec ce script en powershell. Vous pourrez très simplement défragmenter de 1 à n serveurs automatiquement l’un après l’autre.
Une fois adopté, n’oubliez pas de lui associer une tâche planifiée !
Voici le script powershell :
[codesyntax lang= »powershell » lines= »no »]function run-defrag([string]$server) { $log_file = "\UNC_Folder" #Fichier de log $volumes = Get-WmiObject -Query "Select * from Win32_Volume where DriveType = 3" -ComputerName $server #Récuperation de l'ensemble des volumes sur le serveur #Boucle pour chaque volume sur le serveur C:, D:, etc... foreach ($volume in $volumes) { #Analyse du volume $volumeAnalyse = $volume.DefragAnalysis() #Si le volume a besoins d'être défragmenté if ($volumeAnalyse.DefragRecommended) { Write-output "$(get-date) - $server - Defragmenting $($volume.DriveLetter)..." | out-file $log_file -append #MAJ Log $result = ($volume.Defrag($true)).ReturnValue switch ($result) { 0 {$resultvalue = "Success"} 1 {$resultvalue = "Access Denied"} 2 {$resultvalue = "Not Supported"} 3 {$resultvalue = "Volume Dirty Bit Set"} 4 {$resultvalue = "Not Enough Free Space"} 5 {$resultvalue = "Corrupt MFT Detected"} 6 {$resultvalue = "Call Cancelled"} 7 {$resultvalue = "Cancellation Request Requested Too Late"} 8 {$resultvalue = "Defrag In Progress"} 9 {$resultvalue = "Defrag Engine Unavailable"} 10 {$resultvalue = "Defrag Engine Error"} 11 {$resultvalue = "Unknown Error"} } Write-output "$(get-date) - $server - $($volume.DriveLetter) - $resultvalue" | out-file $log_file -append #MAJ Log } #Fin else { Write-output "$(get-date) - $server - $($volume.DriveLetter) already defragmented !" | out-file $log_file -append #MAJ Log } #Fin } #Fin foreach } #Fin fonction #Appel de la fonction avec votre serveur en paramètre, à répéter autant de fois que de serveur run-defrag("Votre_Serveur.Votre_Domaine")[/codesyntax]
Bonne défrag ; -)