Exchange HealthChecker

Allgemeine Infos

Der Exchange HealthChecker (HealthChecker.ps1) ist ein PowerShell-Skript des Microsoft-Supports (CSS), das typische Konfigurationsfehler auf Exchange-Servern findet, die Leistungsprobleme oder langwierige Störungen verursachen. Nebenbei sammelt es genau die Serverdaten, die der Microsoft-Support bei einem Fall ohnehin anfordert. Unterstützt werden Exchange Server 2016, Exchange Server 2019 und Exchange Server SE.

Seit Mai 2021 liegt das Skript im öffentlichen GitHub-Repository CSS-Exchange, zusammen mit weiteren Diagnose- und Sicherheitsskripten von Microsoft. Microsoft verweist in der eigenen Dokumentation auf den HealthChecker, etwa um vor dem Aktivieren von Extended Protection die TLS-Konfiguration aller Server abzugleichen. In der Praxis gehört ein Lauf vor und nach jedem CU oder SU zur Routine.

Abgrenzung: Der HealthChecker liefert eine Momentaufnahme mit Befunden und Empfehlungen, er ist kein dauerhaftes IT-Monitoring. Die Korrektur nimmst Du selbst vor, anders als beim Exchange Emergency Mitigation Service (EEMS), der Mitigationen automatisch anwendet. Für Warteschlangen und Zustellprobleme sind Queue Viewer und Message Tracking zuständig, für den Versionsstand und das Lizenzmodell der Eintrag Exchange Server SE.

Funktionsweise & Details

Ein typischer Ablauf mit dem HealthChecker:

  1. Aktuelle Version über aka.ms/ExchangeHealthChecker laden oder eine vorhandene Kopie mit -ScriptUpdateOnly aktualisieren; dafür braucht das Skript Internetzugriff, aber weder erhöhte Rechte noch die Exchange Management Shell.
  2. Das Skript als Administrator in der Exchange Management Shell auf einem Exchange-Server starten. Das Konto braucht lokale Administratorrechte und die Mitgliedschaft in Organization Management, für -DCCoreRatio zusätzlich Domain Admins.
  3. Mit -Server fragst Du einen oder mehrere Server ab; pro Server entsteht eine XML-Datei im Pfad von -OutputFilePath.
  4. -BuildHtmlServersReport fasst die XML-Dateien aus -XMLDirectoryPath zu einem HTML-Bericht über alle Server zusammen, -AnalyzeDataOnly wertet vorhandene XML-Dateien erneut aus.
  5. Zusatzberichte: -VulnerabilityReport exportiert die Schwachstellenlage aller Server als JSON, -LoadBalancingReport zeigt die Lastverteilung je Standort, -MailboxReport listet die Postfächer eines Servers, -DCCoreRatio das Verhältnis von Exchange- zu Domain-Controller-Kernen.

Zu den Prüfpunkten gehören unter anderem bekannte Schwachstellen des installierten Builds, .NET Framework und Visual C++, TLS-Einstellungen, AMSI, Zertifikate inklusive Auth-Zertifikat, Hyper-Threading und NUMA, Auslagerungsdatei, Netzwerkkarten-Einstellungen, Credential Guard, SMBv1, LmCompatibilityLevel, der EEMS-Status, ausstehende Neustarts und die web.config-Dateien von IIS.

Vorteile & Nutzen

  • Ein Lauf deckt Dutzende Prüfpunkte ab, die Du sonst einzeln in Registry, IIS und Exchange Management Shell zusammensuchen müsstest.
  • Die Schwachstellenprüfung zeigt, ob der installierte Build gegen bekannte CVEs abgesichert ist, und macht fehlende SUs sofort sichtbar.
  • Der HTML-Bericht über alle Server deckt Abweichungen zwischen Servern auf, etwa unterschiedliche TLS-Einstellungen, an denen Extended Protection scheitert.
  • Microsoft pflegt das Skript regelmäßig, deshalb kennt die aktuelle Version neue Builds und Schwachstellen kurz nach deren Veröffentlichung.
  • XML- und HTML-Ausgabe eignen sich als Nachweis für Change-Protokolle und als Datengrundlage für Supportfälle.

Praxisbeispiel

Ein Maschinenbauer mit 220 Postfächern betreibt zwei Exchange-SE-Server in einer DAG. Vor dem Einspielen des Oktober-SU startet die IT den HealthChecker auf beiden Servern und erzeugt den HTML-Gesamtbericht. Der Bericht meldet auf einem Server eine abweichende TLS-Konfiguration und eine falsch dimensionierte Auslagerungsdatei. Die IT korrigiert beides, installiert das SU und lässt den HealthChecker erneut laufen; der zweite Bericht zeigt keine offenen Schwachstellen mehr und wandert als Nachweis ins Change-Ticket.

Worauf sollte man achten?

  • Immer die aktuelle Version verwenden, denn eine alte Kopie kennt neue Builds und CVEs nicht und meldet einen veralteten Stand womöglich als sicher.
  • Vor und nach jedem CU oder SU laufen lassen, damit Du Folgen des Updates von bereits bestehenden Problemen unterscheiden kannst.
  • Hardware-Empfehlungen wie Hyper-Threading oder NUMA mit dem Virtualisierungsteam abstimmen, weil sie Einstellungen am Hypervisor betreffen.
  • Berichte enthalten Servernamen, Zertifikate und Konfigurationsdetails; lege sie nur in geschützten Ablagen ab und veröffentliche sie nicht ungeschwärzt in Foren.
  • Auf Servern ohne Internetzugang die Skriptversion manuell aktuell halten, weil -ScriptUpdateOnly dort nicht funktioniert.

Lizenz & Verfügbarkeit

Der HealthChecker ist kostenlos und wird von Microsoft im öffentlichen GitHub-Repository CSS-Exchange bereitgestellt. Er unterstützt Exchange Server 2016, Exchange Server 2019 und Exchange Server SE. Eine eigene Lizenz ist nicht nötig, der Betrieb der geprüften Server setzt die üblichen Exchange-Lizenzen voraus. Stand: Oktober 2026.

Fazit

Der HealthChecker ist der schnellste Weg, den Zustand einer Exchange-Organisation belastbar zu erfassen. Lass ihn vor und nach jedem Update laufen und arbeite die Befunde der Reihe nach ab.