From 002b48180cca0b7afebf8b2073dfa9bbbbe9d170 Mon Sep 17 00:00:00 2001 From: Ralf Kirchner Date: Fri, 8 Apr 2016 21:52:44 +0200 Subject: [PATCH] Upload Quellcode und Anpassung README.md --- README.md | 34 ++++++++++++++- wsb-mailreport.ps1 | 106 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 wsb-mailreport.ps1 diff --git a/README.md b/README.md index 442f88e..a6eb338 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,35 @@ # wsb-mailreport -Windows Server Backup - Mailreport \ No newline at end of file +Windows Server Backup - Mailreport + +## Description + +Dieses Script wertet den Status der Windows Server Sicherung aus und versendet auf Basis der Daten eine Mail im HTML-Format über den Status der letzten Sicherung. Zusätzlich werden Informationen über das Sicherungsmedium und den freien Speicher übermittelt. + +## Installation, Configuration and Usage + +Erstellen Sie zuerst eine Powershell-Skript mit dem Editor und speichern Sie es auf dem Server als "BackupMailReport.ps1". Passen Sie danach die Variablen Ihren Gegebenheiten an: + +Als nächstes wird eine Ereignisbasiernde Aufgabe benötigt, welche das gerade erstellte Powershell-Skript ausführt. Für den Task "BackupMailReport' werden zwei Trigger konfiguriert, die bei den folgenden Events starten: + + - Ereignis-ID 14 (Abschluss der Sicherung, egal ob erfolgreich oder nicht erfolgreich) + - Ereignis-ID 49 (Kein Sicherungsziel gefunden) + +![Event 14](http://www.ksite.de/wp-content/uploads/2015/10/BackupMailReport_Event_14.png) + + +![Event 49](http://www.ksite.de/wp-content/uploads/2015/10/BackupMailReport_Event_49.png) + +Als Aktion für diese Aufgabe muss "**Programm starten**" ausgewählt und "**powershell.exe**" eingetragen werden. Unter "**Argument hinzufügen**" wird dann als Parameter "**-command c:\BackupMailReport.ps1**" eingetragen. Der Pfad zu dem Script muss den Gegebenheiten angepasst werden. + +![Event Action](http://www.ksite.de/wp-content/uploads/2015/10/BackupMailReport_Action.png) + +Nun wird nach jeden durchgeführten Backup eine Mail mit dem Status der Sicherung an die hinterlegte Mailaddresse(n) versandt. Dieses Script wurde unter Windows Server 2008/2008R2 und Windows Server 2012/2012R2 erfolgreich getestet. + +## Contributors + + * Ralf Kirchner + +## License + +wsb-mailreport is licensed under GPLv3 License. See the [LICENSE](https://dev.ksite.de/wsb-mailreport/blob/master/LICENSE) file for details. \ No newline at end of file diff --git a/wsb-mailreport.ps1 b/wsb-mailreport.ps1 new file mode 100644 index 0000000..49f3252 --- /dev/null +++ b/wsb-mailreport.ps1 @@ -0,0 +1,106 @@ +<# + +.SYNOPSIS + Windows Server Backup - Mailreport + +.DESCRIPTION + Dieses Script wertet den Status der Windows Server Sicherung aus + und versendet auf Basis der Daten eine Mail im HTML-Format über den + Status der letzten Sicherung. Zusätzlich werden Informationen über das + Sicherungsmedium und den freien Speicher übermittelt. + +.EXAMPLE + ./BackupMailReport.ps1 + +.NOTES + AUTHOR : Ralf Kirchner + EMAIL : ralf.kirchner@ksite.de + DATE : 09.08.2015 + +.LINK + http://www.ksite.de + +#> + +# Set sender address +$MailFrom = "" + +# List of users to email the report (separate by comma) +# EXAMPLE: $MailTo = "user1@email", "user2@email" +$MailTo = "" + +#SMTP server DNS name or IP address +$MailServer = "" + +# Benutze Authentifikation (0 = nein, 1 = ja) +$MailAuth = 0 + +# SMTP Auth username +$MailAuthUser = "" + +# SMTP Auth password +$MailAuthPass = "" + + + + +# DO NOT CHANGE ANYTHING PAST THIS LINE! +$OSVersionMajor = [System.Environment]::OSVersion.Version.Major +$OSVersionMinor = [System.Environment]::OSVersion.Version.Minor + + +# Required to use PowerShell with Windows Server 2008 Backup +if ($OSVersionMajor -eq 6 -And $OSVersionMinor -le 1) { + add-pssnapin windows.serverbackup +} + +# Variables +$CurrentTime = Get-Date -Format F +$HostName = Get-Content env:computername +$BackupSummary = Get-WBSummary +$BackupLastSuccess = $BackupSummary.LastSuccessfulBackupTime +$BackupLastBackupTarget = $BackupSummary.LastBackupTarget +$BackupNextBackupTime = $BackupSummary.NextBackupTime +$BackupLastBackupTime = $BackupSummary.LastBackupTime +$BackupResult = $BackupSummary.LastBackupResultHR +$BackupErrorMsg = $BackupSummary.DetailedMessage +$BackupNumberOfVersions = $BackupSummary.NumberOfVersions + +# Change Result of 0 to Success in green text and any other result as Failure in red text +if ($BackupResult -eq 0) { + $BackupResult = "Datensicherung erfolgreich abgeschlossen" + $BackupResultTitle = "Success" + $BackupResultColor = "green" + $MailBackupPriority = "Normal" + } +else { + $BackupResult = "Datensicherung mit Fehler abgeschlossen" + $BackupResultTitle = "Error" + $BackupResultColor = "red" + $MailBackupPriority = "High" + } + +$DriveInfo = Get-WmiObject -Class win32_volume -Filter "Label='$BackupLastBackupTarget'" + +$DriveFreeSpace = [math]::Round($DriveInfo.FreeSpace /1Gb, 2) +$DriveCapacity = [math]::Round($DriveInfo.Capacity /1Gb, 2) +$DriveUsedSpace = $DriveCapacity - $DriveFreeSpace + + +# Assemble the HTML Report +$HTMLMessage = @" +
Windows Backup Report
Backup Status
$BackupResult !

Allgemeine Infos
Letzte Sicherung:$BackupLastBackupTime
Letzte erfolgreiche Sicherung:$BackupLastSuccess
Nächste Sicherung:$BackupNextBackupTime

Zielverwendung
Name:$BackupLastBackupTarget
Kapazität:$DriveCapacity GB
Belegter Speicher:$DriveUsedSpace GB
Freier Speicher:$DriveFreeSpace GB
Verfügbare Sicherungen:$BackupNumberOfVersions Kopien

Fehlermeldung (wenn verfügbar)
$BackupErrorMsg
MailReport by www.ksite.de
+"@ + + +if ($MailAuth) { + # set SMTP cerdentials + $SecuredPassword = ConvertTo-SecureString -String "$MailAuthPass" -AsPlainText -Force + $SecuredCredentials = New-Object System.Management.Automation.PSCredential($MailAuthUser,$SecuredPassword) + + # Email the report + Send-MailMessage -from $MailFrom -to $MailTo -subject "$HostName Windows Backup $BackupResultTitle" -Encoding UTF8 -BodyAsHTML -body $HTMLMessage -priority $MailBackupPriority -Credential $SecuredCredentials -smtpServer $MailServer +} else { + # Email the report + Send-MailMessage -from $MailFrom -to $MailTo -subject "$HostName Windows Backup $BackupResultTitle" -Encoding UTF8 -BodyAsHTML -body $HTMLMessage -priority $MailBackupPriority -smtpServer $MailServer +} \ No newline at end of file