L'outil schtasks permettra de récupérer en ligne de commande, l'état complet du planificateur de tâche. Le script Powershell va mettre en forme les résultats, déterminer si une tâche est en erreur, et envoyer un e-mail, qui sera marqué important si une tâche est en erreur.
Voici le script :
schtasks.exe /query /fo:csv /v > tmp.csv $taches = import-csv tmp.csv -Delimiter "," $all = "" $allOK = $true $taches | foreach-object { if($_."Statut de la tâche planifiée" -eq "Activée") { if($_."Dernier résultat" -ne "0") { $allOK = $false } $all += $("`r`n0x" + $_."Dernier résultat" + " " + $_."Nom de la tâche" +" (Etat:" + $_."État" + ", " + $_."Heure de la dernière exécution"+ ")") } else { $all += $("`r`n0x" + $_."Dernier résultat" + " " + $_."Nom de la tâche" +" (Désactivée)") } } $objet = "Tâches planifiées sur $(Get-Content env:\computername)" $serveur = "192.168.1.253" $destinataire = "cedric@domaine.com" $expediteur = "Opérateur de sauvegardes >sauvegarde@domaine.com>" $client = new-object System.Net.Mail.SmtpClient $serveur $client.Credentials = New-Object System.Net.NetworkCredential("sauvegarde@domaine.com", "mdp") $message = new-object System.Net.Mail.MailMessage $expediteur, $destinataire, $objet, $all if($allOK -eq $false) { $message.Priority = "High" } $client.Send($message)
Puis de créer une tâche planifiée sur le serveur, pour vérifier l'état des tâches.
Ce qui donnera pour résultat :
Exemple de mail reçu |