Voici un script Windows qui permet en lien avec Active Directory et l’utilitaire PSShutdown de lancer l’extinction des postes par le réseau.
- Requête sur l’OU ou sont stockés les ordinateurs dans l’AD (récursif)
- Stockage du résultat dans un fichier texte
- Nettoyage de ce fichier texte
- Boucle de requête : Ordre d’extinction, dans 60 secondes avec un message informant l’utilisateur
- Stockage du résultat des requêtes dans un fichier de log
Pré-requis
- L’outil PSShutdown doit être dans le même dossier que le script, ou dans un dossier System de Windows
- Le script s’exécute de préférence sur le serveur
- Le script se lance par une tache planifiée tous les soirs et mercredi midi
Le petit utilitaire PSShutdown.exe est disponible sur le site SysInternals de Microsoft : Télécharger PSShutdown
Script domain-shutdown.bat – v.0.3 by Gwenael & Alexandre
@ECHO OFF
REM Get all Computers from an OU – Lister les ordinateurs dans une OU precice
dsquery computer « OU=College,DC=STJ,DC=LAN » -o rdn -limit 1000 > machines.txt
REM Remove all quotes – Supprimer les guillemets
for /f « usebackq tokens=* » %%a in (« machines.txt ») do echo:%%~a>> machine.txt
REM Loop – Debut de la boucle
for /f %%i in (machine.txt) do (
psshutdown -accepteula -s -t 60 -f -c -m « Attention – Extinction de ce poste dans 60 secondes… » -e u:00:00 \\%%i 1>SDlog.txt 2>&1
)
REM Deletion of computers list – Suppression des liste de postes
del /f machine.txt
del /f machines.txt
::Decomposition de la date actuelle
set /a J=100%DATE:~0,2% %% 100
set /a M=100%DATE:~3,2% %% 100
set /a A=%DATE:~6,4%
::On garde le format sur 2 chiffres pour le mois
if %M%==1 set M=01
if %M%==2 set M=02
if %M%==3 set M=03
if %M%==4 set M=04
if %M%==5 set M=05
if %M%==6 set M=06
if %M%==7 set M=07
if %M%==8 set M=08
if %M%==9 set M=09
::Et pour le jour
if %J%==1 set J=01
if %J%==2 set J=02
if %J%==3 set J=03
if %J%==4 set J=04
if %J%==5 set J=05
if %J%==6 set J=06
if %J%==7 set J=07
if %J%==8 set J=08
if %J%==9 set J=09
:: On nettoie et renomme le fichier SDlog.txt en Année-Mois-Jour-log.txt
type SDlog.txt | findstr /v If | findstr /v Make | findstr /v Connecting | findstr /v abort | findstr /v PsShutdown | findstr /v Copyright | findstr /v Sysinternals | findstr /v chemin | findstr /v /r /c: »^$ » /c: »^[\ \ ]*$ » >> %A%-%M%-%J%-logs.txt
del /f SDlog.txt