I have just uploaded the new version 3.10 of the Exchange Reporter. In the new version I have fixed numerous bugs that were reported to me. Here is a list of the fixed problems:
- mbxreport.ps1: Mailboxes close to the sending limit are not displayed (thanks Mario)
- mailreport.ps1: spelling mistake corrected (thanks Matthias)
- Error in module assignment in settings.ini corrected
- HealthChecker.ps1: HealthChecker Script updated
- HealthChecker.ps1: Error during import of XML data fixed
- redirectreport.ps1: Shows whether rule is activated or deactivated
- pfreport.ps1: The report now also provides data on Exchange 2019 Public Folders (thanks Mario)
- easreport.ps1: Supplies additional data of the ActiveSync device classes
- includefunctions.ps1: Exchange version detection now provides the latest Exchange version (during migration phase)
There is also a new module:
- clientinfo.ps1: Provides the Outlook versions used
The clientinfo.ps1 module was available up to and including Exchange Reporter version 3.5. Unfortunately, I had to remove it because it no longer provided reliable data. The module is now back and provides an overview of the Outlook versions that connect to the Exchange server. Unfortunately, it is not possible to read the exact Outlook version from the logs, as different Outlook versions sometimes have the same build number (more on this here: Read Outlook version from Exchange MAPI log).
Here is a screenshot of the clientinfo.ps1 module:

The new Exchange Reporter version can be downloaded directly here:
Here you can find a description of the features and more screenshots:
Two more modules are in development for the next version: firstly, the AMSI log files (if available) will be integrated into the report and the storage space used by Exchange log files will also find its place in the report. However, I do not currently have a schedule for the next version.
Hallo Frank,
vielen Dank für das Tool, ich habe von einer älteren Version upgedatet und die neuen Module aktiviert, alles Funktioniert, bis auf daß der Healthchecker nicht in die Mail eingebunden ist, die Überschrift ist da mit einem Fragezeichen als Icon aber darunter ist kein Inhalt.
Gruß
Dreas
Hallo Nochmal,
wenn ich nur das Modul Healthchecker aktiviere und den Report starte hab ich den Report in der Mail.
Gruß
Dreas
Hallo Frank und alle anderen :-)
Danke für das Reporting tool aber leider funktioniert es bei mir nicht so wie es muss.
Ich habe eine Peinliche Frage :-)
Bei ausführen des Skript erhalte ich bei den Module folgender Fehlermeldung. (Working on Module Mailreport.ps1: Error)
Wenn ich das Skript per PowerShell Manuel ausführe um zu schauen was nicht stimmen könnte. bekomme ich das gewisse CMDLET-Befehle nicht recognized sind.
Beispiel:
Generate-ReportHeader : The term ‚Generate-ReportHeader‘ is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try
again.
At C:\Exchange Reporter 3.10\Modules\mailreport.ps1:2 char:15
+ $mailreport = Generate-ReportHeader „mailreport.png“ „$l_mail_header“
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Generate-ReportHeader:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Da ich nicht so versiert bin mit Skripten dachte ich frage lieber nach bevor mehrere Tagen verloren gehen.
Hallo
Ich habe jetzt alles zum funktionieren gebracht und habe jetzt nur ein problem der Mailreport liefert mir Null Daten und im Error Log steht nichts alles ok. Alle Module die ich einsetze liefern mir Daten und Informationen aber den MailReport hat nichts. Der Intervall habe ich auch schon von 7 auf 1 gestellt und der MessageTracking ist auch aktiv. Wir haben Exchange2019 CU10 im Einsatz.
Was kann ich noch versuchen?
Besten Dank für das Feedback
Vielen Dank Frank für die Pflege und das erneute Update Deines Exchange Reporter.
Ich bin leider auf der Suche nach der Dokumentation zu den Modulen ;28=PRTGReport.ps1und ;29=UTMMailreport.ps1 nicht fündig geworden. Wo kann ich diese finden? Lieben Dank.
Mir ist aufgefallen, dass der deutsche HTML Bericht zu den Modulen der eingesetzten Outlook Versionen und des Health Checkers keine Umlaute verwendet.
Des weiteren bekomme ich bei der Erstellung eines neuen Berichtes zu den Modulen folgende Meldungen:
dmarcreport.ps1
Der Parameter „Path“ kann nicht an das Ziel gebunden werden. Ausnahme beim Festlegen von „Path“: „Der Pfad „C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll“ kann nicht gefunden werden, da er nicht vorhanden ist.“
SSLLabsReport.ps1 und updatereport.ps1
Der Antwortinhalt kann nicht analysiert werden, da das Internet Explorer-Modul nicht verfügbar ist, oder die Konfiguration beim ersten Start von Internet Explorer ist nicht abgeschlossen. Geben Sie den UseBasicParsing-Parameter an, und wiederholen Sie den Vorgang.
Liebe Grüße
Michael
Hallo Micha,
hatte auch den Fehler „Der Antwortinhalt kann nicht analysiert werden, da das Internet Explorer-Modul nicht verfügbar ist…“.
Bei mir lag es daran dass die Aufgabe von einem User ausgeführt wurde, welcher sich noch nie selber am Server angemeldet hatte.
Einfach als dieser Benutzer anmelden, 1x Internet Explorer starten und Meldung zur Konfiguration (Vorgeschlagene Werte verwenden / nicht verwenden) bestätigen. Dann hat’s bei mir funktioniert…
Schöne Grüße,
Micha
Klasse Micha
Der Tipp mit dem Anmelden auf der entsprechenden Maschine hat geholfen. SSLLabsReport.ps1 und updatereport.ps1 laufen nun einwandfrei.
Geblieben ist mir nun noch Meldungen zum DMARC Report Modul:
dmarcreport.ps1
Der Parameter „Path“ kann nicht an das Ziel gebunden werden. Ausnahme beim Festlegen von „Path“: „Der Pfad „C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll“ kann nicht gefunden werden, da er nicht vorhanden ist.“
sowie die fehlerhafte Zeichendarstellung für die Outlook Versionen und dem Health Checker, bei dem bspw. die Umlaute nicht korrekt dargestellt werden. Vermutlich wird hier noch keine UTF-8 formatierter HTML Code für den Report verwendet?!
Last, but not least … fehlt mir die Dokumentation zu den Modulen PRTGReport.ps1 und UTMMailreport.ps1.
Hat jemand eine Idee? Frank?
Hi. hab mal das Modul POPconReport.ps1 für die aktuelle Version 4.5.1 angepasst:
$POPconInstallPath = „C:\Program Files\Servolutions\POPcon“
$popconreport = Generate-ReportHeader „POPconReport.png“ „$l_pc_header“
#Übersicht
$cells=@(„$l_pc_servicedname“,“$l_pc_servicename“,“$l_pc_state“)
$popconreport += Generate-HTMLTable „$l_pc_header2“ $cells
$pcservice = Get-Service POPconService
$pcprocess = Get-Process POPconService
$pcservicedname = $pcservice.DisplayName
$pcservicename = $pcservice.name
$pcstate = $pcservice.status
$cells=@(„$pcservicedname“,“$pcservicename“,“$pcstate“)
$popconreport += New-HTMLTableLine $cells
$popconreport += End-HTMLTable
#Verzeichnisse
$pcbadmailcount = (Get-ChildItem $POPconInstallPath\BADMAIL | where {$_.name -notmatch „was_ist“}).count
$pcpickupcount = (Get-ChildItem $POPconInstallPath\PICKUP | where {$_.name -notmatch „was_ist“}).count
$pctoolargecount = (Get-ChildItem $POPconInstallPath\TOOLARGE | where {$_.name -notmatch „was_ist“}).count
$cells=@(„$l_pc_dirName“,“$l_pc_dirItems“)
$popconreport += Generate-HTMLTable „$l_pc_header3“ $cells
$cells=@(„$l_pc_dirBadmail“,“$pcbadmailcount“)
$popconreport += New-HTMLTableLine $cells
$cells=@(„$l_pc_dirPickup“,“$pcpickupcount“)
$popconreport += New-HTMLTableLine $cells
$cells=@(„$l_pc_dirToolarge“,“$pctoolargecount“)
$popconreport += New-HTMLTableLine $cells
$popconreport += End-HTMLTable
#Konfiguration
$cells=@(„$l_pc_settingname“,“$l_pc_value“)
$popconreport += Generate-HTMLTable „$l_pc_header4“ $cells
$pclizenz = (Get-ItemProperty HKLM:\Software\Wow6432Node\POPcon\registration).Name
$pcpostmaster = (Get-ItemProperty HKLM:\Software\Wow6432Node\POPcon\SMTP).Postmaster
$pcserver = (Get-ItemProperty HKLM:\Software\Wow6432Node\POPcon\SMTP).Server
$pcerr1 = (Get-ItemProperty HKLM:\Software\Wow6432Node\POPcon\SMTP).React_on_Exchange_Err1
$pcerr2 = (Get-ItemProperty HKLM:\Software\Wow6432Node\POPcon\SMTP).React_on_Exchange_Err2
$pcerr3 = (Get-ItemProperty HKLM:\Software\Wow6432Node\POPcon\SMTP).React_on_Exchange_Err3
$pcwait = (Get-ItemProperty HKLM:\Software\Wow6432Node\POPcon\Schedule).Schedule_Waittime
$pcwait = switch ($pcwait)
{
0 {„$l_pc_continusly“}
1 {„$pcwait $l_pc_minute“}
default {„$pcwait $l_pc_minutes“}
}
$pcerr1 = switch ($pcerr1)
{
0 {„$l_pc_action2“}
1 {„$l_pc_action1“}
2 {„$l_pc_action3“}
3 {„$l_pc_action4“}
}
$pcerr2 = switch ($pcerr2)
{
0 {„$l_pc_action2“}
1 {„$l_pc_action1“}
2 {„$l_pc_action3“}
3 {„$l_pc_action4“}
}
$pcerr3 = switch ($pcerr3)
{
0 {„$l_pc_action2“}
1 {„$l_pc_action1“}
2 {„$l_pc_action3“}
3 {„$l_pc_action4“}
}
$cells=@(„$l_pc_license“,“$pclizenz“)
$popconreport += New-HTMLTableLine $cells
$cells=@(„$l_pc_postmaster“,“$pcpostmaster“)
$popconreport += New-HTMLTableLine $cells
$cells=@(„$l_pc_exserver“,“$pcserver“)
$popconreport += New-HTMLTableLine $cells
$cells=@(„$l_pc_userunknown“,“$pcerr1″)
$popconreport += New-HTMLTableLine $cells
$cells=@(„$l_pc_msgrefued“,“$pcerr2″)
$popconreport += New-HTMLTableLine $cells
$cells=@(„$l_pc_addrmissing“,“$pcerr3″)
$popconreport += New-HTMLTableLine $cells
$cells=@(„$l_pc_wait“,“$pcwait“)
$popconreport += New-HTMLTableLine $cells
$popconreport += End-HTMLTable
#Postfächer
$cells=@(„$l_pc_mbxdname“,“$l_pc_mbxsmtp“,“$l_pc_mbxuser“)
$popconreport += Generate-HTMLTable „$l_pc_header5“ $cells
$popmbxcount = (Get-ItemProperty HKLM:\Software\Wow6432Node\POPcon\POP3).nPOP3
$i = 1
do
{
$mbxdname = (Get-ItemProperty HKLM:\Software\Wow6432Node\POPcon\POP3\$i).displayname
$mbxsmtp = (Get-ItemProperty HKLM:\Software\Wow6432Node\POPcon\POP3\$i).server
$mbxuser = (Get-ItemProperty HKLM:\Software\Wow6432Node\POPcon\POP3\$i).username
$cells=@(„$mbxdname“,“$mbxsmtp“,“$mbxuser“)
$popconreport += New-HTMLTableLine $cells
$i++
}
while ($i -le $popmbxcount)
$popconreport += End-HTMLTable
#Log
$cells=@(„$l_pc_logentry“)
$popconreport += Generate-HTMLTable „$l_pc_header6“ $cells
#$pclogfile = get-content $POPconInstallPath\POPconSrv.log | select -last 50
$pclogfile = get-content $POPconInstallPath\POPconService.log | select -last 50
foreach ($pclogentry in $pclogfile)
{
$pclogentry = $pclogentry.replace(„-„,““)
$cells=@(„$pclogentry“)
$popconreport += New-HTMLTableLine $cells
}
$popconreport += End-HTMLTable
$popconreport | set-content „$tmpdir\pfreport.html“
$popconreport | add-content „$tmpdir\report.html“