Envoyer un mail lors de l'arrêt d'une VM
Création — Nicolas THOREZ 2020/06/12 12:19
Lorsque des utilisateurs avec des droits d'administration travaillent sur un serveur, il peut arriver que certains confondent Se déconnecter du serveur avec Arrêter le serveur. Voici un petit script que j'avais écris, il y a quelques années, afin d'avertir des responsables lorsque des VM venait à être s'éteindre.
# Script de notification d'arrêt de VM
# Extraction des informations du journal d'évènement
Get-WinEvent -Path 'C:\Windows\System32\winevt\Logs\Microsoft-Windows-Hyper-V-Worker-Admin.evtx' -MaxEvents 10 | Where-Object {$_.ID -eq 18508} | Export-CSV c:\Scripts\ID18508.csv -Encoding UTF8 -UseCulture
# Test de la présence du fichier crypté contenant le mot de passe pour envoi mail sinon création
If (-not (Test-Path ".\mdp.securestring"))
{
Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File -FilePath mdp.securestring
}
# Envoi du mail de notification
$Codage = [System.Text.Encoding]::UTF8
$ServeurSMTP = server.mail.tld
$SMTPPort = 25
$AuthSMTP = "admin@mail.tld"
$MDPCryptFile = ".\mdp.securestring"
$SecureStringPassword = Get-Content -Path $MDPCryptFile | ConvertTo-SecureString
$EmailCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $AuthSMTP,$SecureStringPassword
$Destinataire = @("responsable1@mail.tld","responsable2@mail.tld")
$Expediteur = "admin@mail.tld"
$Sujet = "Notification d'arrêt d'une machine virtuelle"
$Body = "Notification automatique d'arrêt d'une VM. Voir document joint."
$PieceJointe = ".\ID18508.csv"
Send-MailMessage -From $Expediteur -To $Destinataire -Subject $Sujet -Body $Body -SmtpServer $ServeurSMTP -Port $SMTPPort -Credential $EmailCredential -Attachments $PieceJointe -Encoding $Codage
# Suppression du CSV
Remove-Item -Path .\ID18508.csv -Force
Il est nécessaire de modifier le script avec les informations de messagerie voulues et de l'exécuter une première fois afin d'enregistrer et de chiffrer le mot de passe de messagerie.
Il ne reste plus qu'à le lier à une tâche planifiée, s'exécutant à chaque détection de l'évènement 18508.
Discussion