Exchange Server: Healthcheck per Email senden

Um den Zustand des Exchangeservers zu erfahren und auch den aktuellen Patchlevel empfiehlt es sich von Microsoft das Healthchecker.ps1 Script zu verwenden. Hier bekommt man zuverlässige Informationen welches Build installiert ist und welches Hotfixes (in manchen Szenarien sind die Informationen aus der Powershell oder der ECP falsch).

Jedoch ist es mühselig, in bestimmten Intervallen auf den Exchangeserver einzuloggen und jedes mal das Script auszuführen.

Deshalb habe ich ein Script gebaut, welches dies automatisiert. Folgendes wird in dem Script erledigt:

  • Healthchecker updaten
  • Healthchecker ausführen
  • Healthchecker Ausgabe in HTML umwandeln
  • Ergebnis per Email versenden
  • Verzeichnis wieder aufräumen

Wenn ihr dies ebenfalls möchtet, dann geht bitte wie folgt vor:

  • Auf Laufwerk C: einen Ordner Scripts anlegen
  • Das Healthchecker.ps1 Tool runterladen und in den Ordner verschieben
  • Die Datei send-healthcheck.bat erstellen mit den folgenden Inhalt:
@ECHO OFF

REM - GoTo Workdirectory
C:
cd \scripts

REM - Update Healthchecker, run Healthchecker, create HTML Report, send Report
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command ". 'C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto -ClientApplication:ManagementShell; C:\Scripts\healthchecker.ps1 -ScriptUpdateOnly; C:\Scripts\healthchecker.ps1; C:\Scripts\healthchecker.ps1 -BuildHTMLServersReport; Send-MailMessage -smtpserver 'mailserver.domain.com' -to administrator@domain.com -from 'Healthchecker <administrator@domain.com>' -Subject 'Healthcheck Report' -Body 'Healtcheck Emailreport - bitte auf Update kontrollieren' -attachment 'c:\scripts\exchangeallserversreport.html'; del c:\scripts\*.txt; del c:\scripts\*.html; del c:\scripts\*.xml; del c:\scripts\*.old; exit; "
exit

Einen Task erstellen, welcher diese Batchdatei zu einem gewünschten Zeitpunkt ausführt.

Anmerkungen:

Dieser Task muss ausgeführt werden mit den Rechten eines Exchangeadministrators, da sonst kein Zugriff auf den Exchange erfolgt. Weiterhin muss die Option Mit erhöhten Rechten ausführen (Healthcheck muss mit Elevated Rightsum ausgeführt werden – sprich mit Administratorenrechte ausgeführt werden).

Ordner und Dateien müssen mit den rechten eines Exchangeadministrators erstellt werden, da sonst der Task keinen Zugriff auf die Dateien hat.

Bei einigen Installationen endet der Task nicht automatisch, trotz der Exit Anweisungen – hier könnte man in den Taskeigenschaften einstellen, das das Script automatisch beendet wird nach einer Stunde.

Gegebenenfalls müssen die Pfade angepasst werden (z.B. wenn Exchange nicht im Standardverzeichnis installiert ist oder eine andere Version als 2016 installiert ist – diese funktioniert mit Exchange 2013/2016/2019).

Healthchecker Tool von Microsoft auf GitHub

Update:

Um das Tool mit mehreren Exchangeservern zu prüfen, bitte die Batchdatei wie folgt verwenden und anpassen:

@ECHO OFF

REM - GoTo Workdirectory
C:
cd \scripts

REM - Update Healthchecker, run Healthchecker, create HTML Report, send Report
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command ". 'C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto -ClientApplication:ManagementShell; C:\Scripts\healthchecker.ps1 -ScriptUpdateOnly; C:\Scripts\healthchecker.ps1 -SERVER SERVERNAME1; C:\Scripts\healthchecker.ps1 -SERVER SERVERNAME2; C:\Scripts\healthchecker.ps1 -BuildHTMLServersReport; Send-MailMessage -smtpserver 'mailserver.domain.com' -to administrator@domain.com -from 'Healthchecker <administrator@domain.com>' -Subject 'Healthcheck Report' -Body 'Healtcheck Emailreport - bitte auf Update kontrollieren' -attachment 'c:\scripts\exchangeallserversreport.html'; del c:\scripts\*.txt; del c:\scripts\*.html; del c:\scripts\*.xml; del c:\scripts\*.old; exit; "
exit

Tags: , , , ,