[TUTO] – Powershell : Défragmenter à distance un ou plusieurs serveurs en powershell

0
134

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 ; -)

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here