La solution, pinguer la machine avant de lancer l'ordre, si elle ne répond pas, alors on ne lance pas l'ordre.
Voici un petit script powershell qui fait ça très bien :
echo "Synthaxe: script.ps1 `"Reseau`" `"Plage1[;Plage2;Plage3...]`" IP_min IP_max"
echo "Exemple: shutdown.ps1 "172.16" `"100;101;102`" 1 24"
echo "Exemple: shutdown.ps1 "192.168" `"1`" 1 255"
if($args.Length -lt 4) {
echo "Erreur de synthaxe : nombre d'arguement incorrect"
exit 1
}
$date = date
echo "Début shutdown : $date" >> ShutdownLog.txt
$reseau = [string]$args[0]
$plages = [string]$args[1]
$min = [int]$args[2]
$max = [int]$args[3]
$count = 0
$countPing = 0
echo "Args: réseau=$reseau, plages=$plages, min=$min, max=$max" >> ShutdownLog.txt
$plages.Split(";") | ForEach-Object {
$plage = $_
for($i=$min; $i -le $max; $i++) {
$ip = "$reseau.$plage.$i"
$count++
ping -n 1 -w 1000 $ip
if($?) {
echo " shutdown /t 60 /f /m \\$ip"
$countPing++
}
}
}
echo "$count IP scannées, $countPing ordres d'extinctions" >> ShutdownLog.txt
$date = date
echo "Fin shutdown: $date" >> ShutdownLog.txt
Pensez à la planète !