# Script Rapport de sauvegarde. # ce script fait une analyse de l'observateur d'événement à la date du jour et prend en compte le résultat par rapport à l'ID de l'event # si Event Id 4 alors un mail est envoyé avec la mention : La sauvegarde s'est terminée avec succès # si Event id 1 et 14 24 99 alors aucune action effectuée (résultat envoyé "dans le vide" ) # si Event Id X tout sauf 4 1 14 24 99 alors un mail est envoyé avec l' Id de l'event et son message d'erreur ou d'information ################################## # Variables pour l'envoie de mail # ################################## $nomOrdinateur = $env:COMPUTERNAME # recherche le nom de l'ordinateur sur lequel est effectué le script $credentials = new-object Management.Automation.PSCredential “noreply-formulaire”, (“mot_de_passe” | ConvertTo-SecureString -AsPlainText -Force) # éléments d'authentification SMTP $date = (Get-Date).toString('dd/MM/yyyy') # recherche la date du jour au format dd/MM/yyyy $erreur = 0 # Variables pour le test de présence d'un event dans le journal à la date voulue et la présence d'erreur dans ce contenu $entreprise = Get-WmiObject -class win32_operatingsystem |select Description #recherche la description de l'ordinateur, normalement le nom de la société y aura été indiqué. ######################## # Variables à modifier # ######################## $emailTO = "monadresse@mail.fr" # variable concernant le mail expéditeur, à modifier si besoin. ############### # Commande # ############### # décommenter cette ligne pour faire la commande à J - 1 # Get-WinEvent -LogName Microsoft-Windows-Backup | ? {$_.TimeCreated.ToString('dd/MM/yyyy').StartsWith((Get-Date).AddDays(-1).ToString('dd/MM/yyyy'))} | ForEach-Object { Get-WinEvent -LogName Microsoft-Windows-Backup | ? {$_.TimeCreated.ToString('dd/MM/yyyy').StartsWith((Get-Date).ToString('dd/MM/yyyy'))} | ForEach-Object { # /!\ Ne pas déplacer l'accolade # cette commande récupère les entrées du jours dans l'observateur d'évévements et les liste un par un du plus vieux au plus récent. ############# # Variables # ############# $lastError = "Dernière erreur : $($_.Id) - $($_.Message)" # recherche et sélectionne le message d'erreur de l'event afin de l'ajouter dans le mail $lastInformation = "Dernière information : $($_.Id) - $($_.Message)" # recherche et sélectionne le message d'information de l'event afin de l'ajouter dans le mail ############### # envoi mail # ############### # Si aucun event n'est trouvé alors le champs est null, le journal ne comporte aucune entrée pour le jour en cours if ($_.Id -eq $null) { Send-MailMessage -From "sauvegarde-$($entreprise.Description)_$($nomOrdinateur)@entreprise.fr" -Subject "Echec de la sauvegarde sur $($nomOrdinateur.ComputerName) le $($date)" -To $($emailTO) -Body "La sauvegarde n'a pas été effectuée, le journal ne comporte aucune entrée pour le $($date) sur la machine $($nomOrdinateur.ComputerName)." -Credential $credentials -SmtpServer mail.serversmtp.com -Port 500 -Encoding UTF8 } # Cette condition fait en sorte que les events d'Id 1 et 14 et 99 n'active aucune action, aucun mail reçu pour ces Id. ces derniers étant purement indicatifs : # 1 - L’opération de sauvegarde a démarré.. # 14 - L’opération de sauvegarde s’est terminée.. # 99 - Une sauvegarde planifiée a été configurée pour cet ordinateur.. # 24 - # ajouter des ID à ce niveau pour les exclures si besoin. if (($_.Id -eq 1) -and ($_.Id -eq 14) -and ($_.Id -eq 24) -and ($_.Id -eq 99)) { out-null } # Envoi un mail pour tous les event d'Id 4 avec le message d'information - L’opération de sauvegarde s’est terminée correctement.. if ($_.Id -eq 4) { Send-MailMessage -From "sauvegarde-$($entreprise.Description)@entreprise.fr" -Subject "Réussite de la sauvegarde sur $($nomOrdinateur) le $($date)" -To $($emailTO) -Body "La sauvegarde s'est terminée avec succès sur la machine $($nomOrdinateur). $($lastInformation)." -Credential $credentials -SmtpServer mail.serversmtp.com -Port 500 -Encoding UTF8 } # cette dernière, un mail est envoyé pour TOUS les events sauf Id (1 - 4 - 14 - 99) , avec le message d'erreur associé à l'event. if (($_.Id -notlike 1) -and ($_.Id -notlike 4) -and ($_.Id -notlike 14) -and ($_.Id -notlike 24) -and ($_.Id -notlike 99)) { Send-MailMessage -From "sauvegarde-$($entreprise.Description)@entreprise.fr" -Subject "Echec de la sauvegarde sur $($nomOrdinateur) le $($date)" -To $($emailTO) -Body "La sauvegarde n'a pas été effectuée sur la machine $($nomOrdinateur). $($lastError)." -Credential $credentials -SmtpServer mail.serversmtp.com -Port 500 -Encoding UTF8 } }