Exchange Health Check Report Skript
Im heutigen Beitrag stelle ich euch ein Exchange Health Check Skript zur Verfügung. Das Ziel besteht darin den Zustand der Exchange-Server zu überprüfen und einen täglichen oder wöchentlichen Report zu generieren.
Code auf GitHub
Kurz zum Hintergrund
Der Betrieb einer Exchange-Umgebung erfordert eine routinierte oder automatisierte Funktionsprüfung der Exchange Server um einen reibungslosen Betrieb zu gewährleisten. Insbesondere nach der Bereitstellung von Windows- oder Exchange Sicherheitsupdates (mit und ohne DAG) ist es wichtig sämtliche Komponenten der Exchange Server zu überprüfen damit präventiv eine Störung vermieden wird.
Grundsätzlich empfiehlt es sich die Exchange Infrastruktur durch ein Monitoring-System zu überwachen. Hierbei sollten die Server nicht nur auf Erreichbarkeit wie z.B. Ping oder Laufwerks-Kapazitäten überprüft werden, sondern auch die jeweiligen Exchange Komponenten wie z.B. OWA und Hub Transport. Exchange stellt z.B. sogenannte “Health Check URLs” bereit, um sicherzustellen, dass die virtuellen Verzeichnisse wie OWA, ECP oder ActiveSync stets erreichbar sind:
https://SERVERNAME/mapi/healthcheck.htm
https://SERVERNAME/owa/healthcheck.htm
https://SERVERNAME/ecp/healthcheck.htm
https://SERVERNAME/Microsoft-Server-ActiveSync/healthcheck.htm
https://SERVERNAME/powershell/healthcheck.htm
https://SERVERNAME/autodiscover/healthcheck.htm
https://SERVERNAME/ews/healthcheck.htm
https://SERVERNAME/oab/healthcheck.htm
https://SERVERNAME/rpc/healthcheck.htm
Hierbei sollte stets der HTTP Code 200 (Verbindung erfolgreich) als Antwort zurück gegeben werden, andernfalls liegt eine Störung in der jeweiligen Schnittstelle vor:
Wenn wir einen Blick in die Ausgabe von
Get-ServerComponentState Servername
hinein blicken, so werden hier die Exchange Komponenten eines im Betrieb laufenden Exchange Servers angezeigt:
Die Spalte “State” gibt uns den Wert “Active” zurück und wir können davon ausgehen, dass alles in Ordnung ist.
Was sind Exchange Komponenten?
Die Exchange Komponenten bilden sozusagen eine weitere Schicht der bereitgestellten Exchange Dienste und ermöglicht eine feinere Steuerung des Betriebsmodus. Während z.B. die Exchange Dienste unter Windows weiter laufen, erlaubt der in Exchange 2013 eingeführte Betriebsmodus einzelne Komponenten wie z.B Hub-Transport auf einen beliebigen Exchange-Knoten außer Betrieb zu nehmen. Das bedeutet, dass parallel alle weiteren Exchange Komponenten ihre Funktionen verrichten. In diesem eingeschränkten Betriebsmodus können z.B. Nachrichten auf andere Server umgeleitet werden und erlaubt somit eine temporäre Wartung während andere Funktionen weiterhin zur Verfügung gestellt werden. Weitere Informationen können gerne hier eingesehen werden: Link
Wenn nun ein Server in den Wartungsmodus versetzt wird, so wird der Status Inactive eingenommen. Einen detaillierteren Bericht über den Zustand eines Servers erhält man durch:
Get-ServerHealth EX01 | ft -AutoSize
bzw.
Get-ServerHealth -Identity ex01 | ? { $_.AlertValue -ne "healthy" } | ft -Autosize
Es stehen genauso diverse CommandLets zur Verfügung, um Verbindungstests durchzuführen:
Get-Command test-*activity
Neben den benannten Beispielen gibt es selbstverständlich viele weitere Möglichkeiten die Exchange Umgebung auf Herz und Niere zu überprüfen. Gehen wir nun einen Schritt weiter und lassen uns automatisiert einen Bericht zuschicken…
Skript in die Aufgabenplanung aufnehmen
Inhalt des Skriptes in einem beliebigen Ordner ablegen – z.B.: C:\Scripts\health_check_report
Gerne darf hier das eigene Firmen-Logo “logo.png” abgelegt werden.
PowerShell als Administrator öffnen und folgende Befehle eingeben:
- cd “C:\Scripts\health_check_report“
- “.\prepareSchedulerTask.ps1” (Punkt nicht vergessen)
- Im Anschluss darauf wird das Skript in die Aufgabenplanung aufgenommen:
- Als nächstes kann jetzt festgelegt werden wann das Skript ausgeführt wird – hier jeden Montag um 6 Uhr morgens:
Im nächsten Schritt setzen wir die SMTP Parameter in der Datei “params.txt“:
- Zeile 1: SMTP-Server
- Zeile 2: Absender
- Zeile 3: Empfänger
Das Skript kann abschließend über die Aufgabenplanung ausgeführt werden. Der HTML Report wird im Anschluss in das Skriptverzeichnis abgelegt:
HTML Bericht
Der HTML Version kann hier eingesehen werden: Link
Auszug des Berichts:
OWA
HTML Datei im Skriptverzeichnis:
Download Skript:
Code auf GitHub
Moin Eddie, danke für das coole Skript!
Leider läuft es nicht unter Exchange Core Version weil er taskschd.msc nicht findet. Denkst du man könnte es für den Core noch irgendwie anpassen?
VG
Alex
Moin Alex,
gute Idee! Update folgt…
Gruß
Eddie