Dieses Script kann verwendet werden um den Replikationsstatus von HyperV Server via Email zu versenden.
Der Code als "HyperV-replicationStatus.ps1" speichern.
Code:
# Titel : HyperV-replicationStatus.ps1
# Beschreibung : Dieses Script liest den Status der Replikation unter HyperV aus und versendet dies als Email 
# Autor : Alex Faes, FSIT AG (alex.faes@fsit.com) 
# Datum : 11. November 2014
# Version : v1.0 
# Bemerkungen : Siehe Anleitung des Scripts // Dieser Header darf NICHT entfernt werden. 

### Bitte editieren START ###
$firma = "Firma"
$VMSERVER = "hyperVHost1, HyperVHost2" #kann mit "," erweitert werden
$to = "email@domain.ch" #Empfänger angeben
#$cc = "" # CC angeben wenn nötig und # am anfang entfernen
### Mail Server Settings###
$SMTPServer = "mail.gmx.com"
$SMTPPort = "25"
$Username = "Loginname"
$Password = "Passwort"
### Bitte editieren ENDE ###
### formatierungen ###
$FormatHtml = "<style>"
$FormatHtml = $FormatHtml + "BODY{background-color:white;}"
$FormatHtml = $FormatHtml + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}"
$FormatHtml = $FormatHtml + "TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;}"
$FormatHtml = $FormatHtml + "TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;}"
$FormatHtml = $FormatHtml + "</style>"
 

### Nichts ändern ab hier ####
$subject = "HyperV Replikations Status von $firma"
$VMSTATUS = Get-VMReplication -computername $VMSERVER | select-object lastreplicationtime, vmname, computername,health,replicationhealth, @{Expression={"{0:N0}" -f ((get-date)-($_.lastreplicationtime)).TotalMinutes};Label="Delta (min)"} | Sort-Object -Property LastReplicationTime | convertto-html -head $FormatHtml
$body = "$VMSTATUS"
$message = New-Object System.Net.Mail.MailMessage
$message.subject = $subject
$message.body = $body
$message.IsBodyHtml = $True
$message.to.add($to)
#$message.cc.add($cc)
$message.from = $username
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
$smtp.send($message)
write-host "Mail Sent"
Erklärung der Variabeln:
$firma Firmennamen, welcher im Skript angezeigt wird
$VMSERVER Die HyperV Host Server
$to Empfänger Email Adresse
$cc Empfänger Email Adresse
$SMTPServer Ausgehender MailServer (default belassen)
$SMTPport Postausgangsserver Port (default belassen)
$Username SMTP Auth Login (default belassen)
$Password SMTP Auth Passwort (default belassen)
Wie wird es als Script aufgerufen:
Das Skript kann mittels einem Scheduled Task mit folgendem Aufruf gestartet werden:
Code:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe SkriptPfad
Auszuführen ist dieses Script als Domain Admin.