Icone TxtLe temps du nettoyage des machines est arrivé ! Mais que faire lorsqu’un nombre incalculable de machine est à nettoyer ?

Un script déployé par le serveur est largement envisageable… Pour ma part j’ai choisi de déployer mon script de nettoyage.

Je voulais aussi que les sorties de certaines opérations soit enregistrées sur un log. Regardons ensemble comment nettoyer des machines de fàçon automatique.

Tout d’abord il faut créer un dossier partagé sur le serveur (Nettoyage dans l’exemple) qui servira, de dossier de base pour les scripts et, de cible pour les logs.

Maintenant il faut se poser la question de ce qu’il y à a nettoyer (nous y reviendrons pendant le script). Un logiciel fourni par Microsoft du nom de « Delprof » qui permet d’effacer à distance les profils utilisateurs locaux sera utilisé. Il ne s’utilise que dans les cas où les architectures utilisant les profils itinérants, on soulagera ainsi le dossier « documents and settings ».

Examinons les scripts ensemble. Le premier script est celui qui va être déployé et permettra la copie et l’exécution des scripts et utilitaires nécessaire au nettoyage.

Script.bat

@Echo off
net use y: \\IPSERVEUR\Nettoyage
y:
md c:\netoyage
copy netoyage.bat c:\netoyage\
copy delprof*.* c:\netoyage\
c:
cd\netoyage
start /wait netoyage.bat
cd\netoyage
del /s /q /f *.*
cd\
rd netoyage
net use /delete y:
shutdown -m \\127.0.0.1 -s -t 30

Désactive l’affichage du script à l’écran
Créér un lecteur réseau Y: à l’emplacement du serveur
Créér un dossier néttoyage dans la racine
Se rend sur le lecteur Y: donc sur le dossier source du serveur
Copie le script vers le dossier c:\nettoyage
Copie du logiciel delprof vers le dossier c:\nettoyage
Se rend sur le disque C:
Se rend dans le dossier nettoyage
Lance le fichier de nettoyage et attend sa fin pour continuer
Retourne par sécurité dans le dossier nettoyage
Efface tout ce qu’il y a dans le dossier nettoyage
Retourne à la racine du disque
Supprime le dossier nettoyage
Déconnete le lecteur réseau Y:
Ordonne l’extinction de la machine dans 30 secondes

Puis voici le script de néttoyage en lui même. nettoyage.bat

@Echo off
c:
cd\
del /s /q /f *.old
del /s /q /f *.bak
del /s /q /f *.tmp
del /s /q /f *._ld
del /s /q /f *.pif
del /s /q /f *.chk
del /s /q /f *.bad
del /s /q /f *.gid
if exist %systemroot%\temp del /s /q /f %systemroot%\temp\*.* >> y:\logs\%computername%.txt
if exist %systemroot%\prefetch del /s /q /f /a %systemroot%\prefetch\*.* >> y:\logs\%computername%.txt
if exist %systemroot%\system32\dllcache\tourstrt.exe (attrib -h -r -s %systemroot%\system32\dllcache\tourstrt.exe) & (del /s /q /f /a %systemroot%\system32\dllcache\tourstrt.exe) >> y:\logs\%computername%.txt
if exist %systemroot%\system32\dllcache\tourw.exe (attrib -h -r -s %systemroot%\system32\dllcache\tourw.exe) & (del /s /q /f /a %systemroot%\system32\dllcache\tourw.exe) >> y:\logs\%computername%.txt
if exist %systemroot%\system32\tourstart.exe del /s /q %systemroot%\system32\tourstart.exe >> y:\logs\%computername%.txt
if exist %systemroot%\minidump del /s /q /a %systemroot%\minidump\*.* >> y:\logs\%computername%.txt
if exist %systemroot%\system32\spool\printers del /s /q %systemroot%\system32\spool\printers\*.* >> y:\logs\%computername%.txt
if exist %systemroot%\downlo~1 del /s /q /f /a %systemroot%\downlo~1\*.* >> y:\logs\%computername%.txt
if exist %systemroot%\pchealth\helpctr\datacoll del /s /q /f /a %systemroot%\pchealth\helpctr\datacoll\*.* >> y:\logs\%computername%.txt
if exist %systemroot%\system32\wbem\logs del /s /q /f /a %systemroot%\system32\wbem\logs\*.* >> y:\logs\%computername%.txt
if exist « %systemroot%\debug » del /s /q /f /a « %systemroot%\debug »\*.log >> y:\logs\%computername%.txt
if exist %systemroot%\security\logs del /s /q /f /a %systemroot%\security\logs\*.log >> y:\logs\%computername%.txt
if exist %systemroot%\system32\logfiles del /s /q /f /a %systemroot%\system32\logfiles\*.* >> y:\logs\%computername%.txt
cd\netoyage
delprof /q /i /c:\\127.0.0.1 >> y:\logs\%computername%.txt
chkdsk >> y:\logs\%computername%.txt
defrag c: -v >> y:\logs\%computername%.txt
exit

Mais reprenons un petite peu le détail de ce script

del /s /q /f *.old
del /s /q /f *.bak

Celà supprime toutes les extensions jugées ancienne…
/s supprime dans tout les sous répertoire
/q pas de confirmation avant suppression avec caractères génériques de type * ? etc…
/f supprime les fichiers en lecture seule.

if exist %systemroot%\temp del /s /q /f %systemroot%\temp\*.*
if exist %systemroot%\prefetch del /s /q /f /a %systemroot%\prefetch\*.*

Supprime certains dossier. Cette commande s’execute seulement si le dossier est présent sur le disque.

>> y:\logs\%computername%.txt

Cette partie que l’on retrouve souvent à la suite d’une commande permet d’écrire la sortie dans un fichier sur le serveur portant le nom de la machine (%computername%) en train d’être nettoyage. Celà nous permettra de verifier postérieurement le bon déroulement des nettoyages des machines…

1 – delprof /q /i /c:\\127.0.0.1 >> y:\logs\%computername%.txt
2 – chkdsk >> y:\logs\%computername%.txt
3 – defrag c: -v >> y:\logs\%computername%.txt

1 – /!\ Cet utilitaire va supprimer tout les profils d’utilisateurs locaux /!\ /q ne demande aucun confirmation /i ignore les erreurs et continue la suppression /c précise l’ordinateur cible \\127.0.0.1 correspond au localhost donc à la machine elle même.
2 – chkdsk vérifie le disque et affiche un rapport d’état. Si des erreurs sont retrouvées dans les logs il faudra ré-intervenir sur la machine
3 – Defragmente le disque
/v créé une sortie détaillée.

Voilà nous avons à présent notre script prêt à être déployé. Je l’ai conçu et utilisé pour des machines Xp pro et 2000 Pro et est non testé sur les autres système d’exploitation microsoft. Je ne serai nullement responsable d’une mauvaise utilisation de ce script ou de pertes de données éventuelle.