I have just released the new version of the Exchange Reporter. Besides a small bugfix regarding the incorrectly displayed failover time of the databases within a DAG, three new modules are now available. Two of the new modules were contributed by Leslie. Leslie has already found and reported many bugs in the previous versions, so he deserves a big thank you here. A big thank you!
The new module "HealthChecker.ps1" integrates the script "Exchange Health Checker" into the Exchange Reporter. The module executes the original script and integrates the results of the Health Checker into the Exchange Reporter. Here is an example:

If anyone is not yet familiar with the Exchange Health Checker: The script has been around since 2015 and was recently mentioned on the Exchange Team Blog:
The checks performed by the Health Checker can also be found under the link. In the current version, Exchange Reporter can now execute the Health Checker script and also display the results in the Exchange Report. In addition to the many available statistics, Exchange Reporter is now also able to automate the Health Check and summarize it in a report. Of course, the Health Checker can be updated independently of Exchange Reporter, how exactly this works can be found in the Exchange Reporter documentation.
Leslie has sent me two new modules, which I would also like to include in the reporter. The "LicenceReport.ps1" module generates an overview of the Exchange Client Access licenses used and available. The module provides a good overview of whether there is a license deficit. To be fair, however, I have to say that the evaluation only provides a very superficial overview of the licenses; this module does not stand up to a SAM audit in any way. Nevertheless, I find the module quite useful, here is an example:

The module requires changes to the settings.ini. Therefore, please read the documentation to adapt the existing settings.ini accordingly, or adapt the supplied settings.ini accordingly.
The also new module "AddressListsReport.ps1" provides an overview of the Exchange address lists, so you can find address lists that have no entries:

In larger environments, however, the module would have to be adapted somewhat, as a list of all members can generate a very large report. In environments where there are many address lists, however, I find the module very useful.
Furthermore, two small errors have been fixed. In the DAGReport.ps1 the wrong failover time and an incorrect number of database copies were displayed. The current version can be downloaded here:
Click here to go to the Exchange Reporter page with a detailed description:
Hallo
erstmal Danke für die ganze Arbeit.
Leider kann ich den Exchange Reporter nicht starten, beim Laden der „global Variab“ kommt immer ein Error.
In der Errorlog.txt steht folgendes:
———————————————————————————————————————————————————————————–
-Start– 01/19/2022 11:30:39 ———————————————————————————-
Die Benennung „Set-ADServerSettings“ wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
———————————————————————————————————————————————————————————–
Hat jemand eine Idee, was hierfür der Grund ist?
Danke
Michi
Moin!
Kann es sein, dass die 28=PRTGReport.ps1 Doku im PDF komplett fehlt…?
Hallo Frank,
kann das Script evtl. noch um die Möglichkeit erweitert/angepasst werden, die credentials über eine im Benutzerkontex erstellten und ausgelesenen XML Datei einzulesen?
Die Zugangsdaten in der settings.ini im Klartext zu hinterlegen, finde ich nicht so gut. Dort würde ich lieber den Pfad zu einer xml-Datei hinterlegen, in dem die Credentials enthalten sind. Somit kann diese auch nur der Benutzer auslesen, der die Datei auf dem Server erstellt hat.
Kann ja evtl. als zusätzliche Option ein hinzugefügt werden, wenn ein Pfad zu einer xml angegeben ist, nutze dies, ansonsten die im Klartext hinterlegten Daten.
Gruß
Stefan
Hallo, lange schon setzen wir den Reporter ein. Zuletzt V3.7… Nun auf 3.9 gewechselt.
Eine Frage, gibt es schon Bestrebungen -oder auch nen geheimen SChalter- um bei der Mail Flow Übersicht (Gesendete/Empfangene Mails) unterscheiden zu können ob es sich um EXTERNE oder INTERNE Mails handelt?
Die Unterscheidung könnte ja z.B. über die Akzeptierten Domänen (Accepted Domains unter Mailflow) erfolgen.
Die dort hinterlegten Domänen, sind Firmenintern. Und alles nicht enthaltene ist „Extern“.
Das wäre klasse
Vielen Dank
Guten Morgen alle zusammen.
Bei „Modules“ tragen diese beiden gemeinsam die Nummer „34“. Ist das korrekt:
34=Addresslistreport.ps1
34=HealthChecker.ps1
Vermutlich ist der „HealthChecker“ dann die 35, oder?
Hallo Martin,
Über die Nummern kannst du die Reihenfolge im Report beinflussen soweit hatte ich das verstanden und angewendet.
Hallo Martin,
das ist richtig, die Nummern steuern die Reihenfolge und sollten unterschiedlich sein. Die beiden Module sind voneinader unabhängig.
Grüße Leslie
Hi Martin,
stimmt, ist ein kleiner Fehler in der settings.ini. hat aber keine Auswirkungen, es dient (wie schon von anderen erwähnt) nur der Sortierung der Module im Report. Gleiche Nummern sind daher erst einmal kein Problem. Ich werde es aber in der nächsten Version korrigieren.
Gruß,
Frank
Hallo Frank,
die Aussage ist meiner Erfahrung nach falsch. Bei doppelten Nummern ist der zuerst erwähnte Report (zumindest in einer Email) nicht enthalten.
LG
Hallo zusammen,
vielen Dank für die überarbeitete Version!
Bei der Integration in unserer Umgebung ist mir aufgefallen, dass nun Administratorenrechte notwendig sind um das Skript laufen zu lassen. Hat das einen bestimmten Grund?
Denn der dafür vorgesehen Nutzer hat an allen Servern die notwendigen Rechte, um die Informationen abzurufen. Ich möchte jetzt ungern das Berechtigungsschema aufbohren.
Gruß,
Daniel
Hallo Daniel,
das ein oder andere Modul benötigt lokale Admin Rechte, es kann also bei Modulen zu Fehlern kommen, wenn diese nicht mit lokalen Admin Rechten laufen. Ich hab aber dummerweise nicht dokumentiert, welche Module zickig werden. Wenn du möchtest kannst du aber Zeile 1 (#Requires -RunAsAdministrator) in der Datei „New-ExchangeReport.ps1“ löschen, somit ist keine administrative PowerShell mehr erforderlich.
Gruß,
Frank
Hallo Lesli,
wir haben viele Shared Mailbox und natürlich Benutzer mit Vollzugriff auf diese aber sollte es das vielleicht sein?!
Kann man auslesen bzw. Herausbekommen welche Postfächer das wäre.
Auch die Anzahl der Active Sync Benutzer ist viel geringer aber was ich mir vorstellen kann ist eine Regel, die bei bestimmten Anwendern Elemente die älter als 60 Tage sind aus dwm Papierkorb löscht aber auch nur da und das war bisher bei der Standard Cal dabei.
Mfg Paul
Hi Paul,
die Shared Mailboxen sollten das nicht sein und auch für Active Sync brauchst du keine Ent Cal aber für bestimmte Beschränkungen auf die mobilen Geräte per Richtlinie.
Eine Liste der betroffenen User bekommst du mit
Get-ExchangeServerAccessLicenseUser -LicenseName (Get-ExchangeServerAccessLicense |
Where-Object {($_.UnitLabel -eq „CAL“) -and ($_.LicenseName -like „*Enterprise*“)}).licenseName -WarningAction silentlyContinue
Ich hatte auch überlegt ob man die Liste mit aufnimmt aber das kann den Bericht wie hier natürlich schnell fluten.
Aufbewahrungsrichtlinien mit persönlichen Tags zählen zu den Ent CAL Funktionen.
https://docs.microsoft.com/de-de/exchange/policy-and-compliance/mrm/retention-tags-and-retention-policies?view=exchserver-2019
Grüße Leslie
Hallo Leslie,
wir haben die Ursache gefunden und es war ein Aufbewahrungstag namens „Never Delete“ innerhalb einer Aufbewahrungsrichtlinie. Nach der Entfernung sank die Anzahl der Ent CAL`s auf 70.
Vielen Dank für den Tipp und das Modul.
Hi Paul,
freut mich wenns geholfen hat, danke fürs Feedback.
Grüße Leslie
Hallo Frank,
ich hab mir die neue Version heruntergeladen und auf den Exchange eingespielt.
Kann es sein, dass das Modul clientinfo.ps1 im Archiv komplett fehlt?
Ciao Thomas
Hallo Thomas,
richtig, das Modul gibt es nicht mehr.
Gruß,
Frank
Hallo Frank,
danke für die neue Version.
Gibt es eine Möglichkeit die Funktion für Exchange 2016 wieder zurück zu bringen? In den RPC Client Logs kann ich keinen Hinweis mehr auf den verwendeten Client finden. Oder wo muss man da suchen?
Gruß
Peter
Hallo Peter,
ich hoffe ich kann das Modul noch mal zurück bringen. Ich muss mich erst einmal wieder damit beschäftigen, wo man am besten die Infos zu den CLients abgreifen kann.
Gruß,
Frank
Hallo Frank,
danke für die Info. Unter $exinstall\Logging\MAPI Client Access konnte ich die genutzten Outlook Versionen finden.
Gruß
Peter
Meinte $exinstall\Logging\MapiHttp\Mailbox
Version läuft wie es sein soll aber die Anzahl der Ent. CAL‘s kann ich so nicht glauben denn es wären bei uns eigentlich nur 70 und nicht 1600. Nur die 70 haben ein Archivpostfach und sonst gibt es nur normale Postfächer und Sammelpostfächer (Shared Mailbox).
Ich hatte damals den Wunsch geäußert bei den EAS Geräten die Anzahl der Inaktiven Tage über die settings.ini vielleicht umzusetzen.
Vielleicht kommt das ja noch und vielen Dank für das Tool
Ich habe die Anzahl manuell auf 90 Tage angehoben, das ist ziemlich einfach, aber ja, bei einem Update geht das natürlich verloren.
\Modules\easreport.ps1
Zeile 39:
if ($daysinactive -gt 90)
und für den Report
\Language\DE\easreport.ps1
„Übersicht ActiveSync Geräte die länger als 90 Tage nicht synchronisiert wurden“
Enterprise CALs werden noch für einige andere Funktionen benötigt. Vielleicht nutzt ihr noch was anderes? Ich will jetzt einen Bug auch nicht ausschließen aber um solche Überaschungen zu erkennen habe ich das Modul erstellt. :)
https://www.microsoft.com/en-us/microsoft-365/exchange/microsoft-exchange-server-licensing-licensing-overview
Oh man, der Zufall mal wieder. Gestern gerade erst Version 3.8 runtergeladen und installiert und eingerichtet und heute direkt das Update. :-)
Aber dennoch, Besten Dank an alle Beteiligten!