[PS] Script de libération d’espace disque

Hello,

Ça faisait longtemps que je n’avais rien posté ici alors voici un sujet sur lequel j’ai du travailler sur ma mission actuelle.

Beaucoup de postes utilisateurs sont équipés d’un SSD de 128 Go ce qui après quelques mois/années d’utilisation s’avère un peu … juste 🙂 Par conséquent j’ai planché sur un script pour libérer un peu d’espace disque sur ces postes. Plutôt que de donner le script intégral sur le site je vais vous en donner les morceaux les plus important, le reste est surtout très spécifique à l’environnement dans lequel je suis (Nom de serveur pour les logs, clés de registres spécifiques, etc.).

Comme d’habitude je ne suis pas un expert en Powershell et il y a sûrement des coquilles ou des façons de faire plus simples/rapides donc je suis preneur des remarques en commentaires !


Le script se base sur l’outil Microsoft « CleanMgr » ainsi que la suppression manuelle de plusieurs dossiers/fichiers. Le « CleanMgr » dispose de commutateurs (CF Technet ou ce site), nous allons définir plus bas dans l’article 2 modes d’exécutions :

  • Normal cleaning (un nettoyage léger si l’espace disque est supérieur à 5 Go).
  • Full cleaning (un gros nettoyage si l’espace disque est inférieur à 5 Go).

Tout d’abord commençons par les variables :

Ici rien de spécial, je récupère la date et heure que je mets dans un format plus parlant (les 3 premières), ensuite je log le début du script pour pouvoir calculer le temps d’exécution (4ème ligne). Les 5 et 6 ème lignes sont là pour éviter de rejouer le script en Full Cleaning plus d’une fois par mois.

Les lignes 7 et 8 sont pour avoir l’espace disque en MB et GB, les 3 dernières sont pour l’emplacement des logs (pensez à mettre le votre).

Maintenant on importe les clés de registres nécessaires à notre « Normal » et « Full Cleaning » (Pour le détail voyez la Technet) :

Comme on génère des logs on se met une sécurité pour éviter d’utiliser trop d’espace avec notre log, du coup on le supprime si supérieur à 1 Mb :

Arrive ensuite le moment ou l’on vérifie si l’espace disque est inférieur à 5 Go pour lancer le « Full Cleaning » :

Nos postes sont parfois dit « libre service » et donc beaucoup d’utilisateurs se connectent dessus … on supprime donc les OST d’Outlook qui n’ont pas servi depuis plus de 6 mois :

Les personnes du support disposent de compte avec des droits d’administrations sur les postes utilisateurs, ils se terminent par « ADM ». Nous supprimons donc ces profils des postes si ils ne sont pas utilisés depuis plus de 6 mois :

Nous utilisons SCCM 2012 pour la gestion des postes, pour gagner de précieux Gb nous supprimons le cache dont les objets ont plus d’un mois d’ancienneté :

Nous avons sur les postes les plus anciens basculé du client SCCM 2007 vers le 2012, parfois il reste des traces de l’ancien client (dont le cache !) … nous le supprimons si SCCM 2012 est detecté (et nous notons sa taille en passant) :

Nous ajontons ensuite une clé de registre pour indiquer la date du dernier « Full Cleaning » :

Maintenant passons au « Normal Cleaning » si le poste dispose de plus de 5 Go d’espace libre ! Rien de spécial ici car nous lançons un « Cleanmgr » basique et supprimons les traces de SCCM 2007 si le 2012 est présent :

Les données de nos utilisateurs sont stockées sur le « C:\Documents\ », nous récupérons la taille totale de ce dossier par utilisateur. Et pour terminer tout cela on génère les logs qui seront placés dans c:\Windows\Logs 🙂

Le script est exécuté via une tâche planifiée qui est placée par une GPO !

Voilà c’est terminé, je pense que certains pourront y trouver leur bonheur ou un bout de code 🙂

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *