Exchange Monitor

Exchange Monitor ist ein PowerShell Script welches Exchange Server überwacht und Administratoren im Fehlerfall auch per SMS benachrichtigen kann. Exchange Monitor ist für kleine Exchange Organisationen gedacht, die über keine eigene Monitoring / Überwachungslösung verfügen.

Exchange Monitor erstellt eine Website, die mit jedem Webserver dargestellt werden kann (IIS, Apache, PowerShell, etc.) oder direkt mit einem Browser geöffnet werden kann. Exchange Monitor wird per geplanten Task (am besten auf einem separaten Server) ausgeführt und erstellt eine index.html Datei mit folgenden Informationen:

  • Mail Versand/Empfang Überwachung (verschickt eine Mail ins Internet und wertet die Antwort aus)
  • Überprüft zusätzliche SMTP Gateways bei Bedarf (Proxys, AntiSPAM Gateways)
  • Listet die Warteschlangen auf und alarmiert bei volllaufenden Warteschlangen
  • Überwacht den Speicherplatz der Exchange Server
  • Überwacht die SMTP Gateways per Ping
  • Überwacht die Exchange Dienste
  • Kann per SMS Fehler melden (ja… SMS, Whatsapp in alt, Mail wär ja doof bei einem Ausfall…) :-)

Exchange Monitor bietet zwar keine Echtzeit Überwachung, kann aber helfen Probleme zu erkennen, bevor es zu einem Ausfall kommt.

Screenshots der Monitoring Website:

Dashboard

Details

Installation:

Die Installation ist einfach: Runterladen, entpacken, settings.ini anpassen, starten.

.\Start-ExchangeMonitor.ps1 -Installpath c:\ExchangeMonitor

In dem Verzeichnis findet sich die folgende Struktur:

image

Im Verzeichnis „HTML“ liegt nach dem ersten Durchlauf eine Datei mit dem Namen „index.html“, diese kann entweder direkt per Browser geöffnet werden, oder es wird ein IIS installiert der auf dieses Verzeichnis zeigt.

Im Exchange Monitor Verzeichnis findet sich ebenfalls die Datei „settings.ini“. Hier müssen die entsprechenden Einstellungen vor dem ersten Start vorgenommen werden:

image

  • Checkpoints = Anzahl der zu speichernden Prüfpunkte
  • Echomail =Testmail mit Autoresponder für Mailflow (kann normalerweise so belassen werden)
  • Testmailbox =E-Mail Adresse von der die Testmail geschickt und wieder empfangen werden
  • TestUser =Der zugehörige Benutzername zur Testmailbox
  • TestUserDomain =Die zugehörige AD-Domain in der sich das Konto des TestUsers befindet
  • TestUserPass =Passwort des Testusers
  • AddSmtpServers =zu prüfende SMTP Gateways, die per SMTP Port 25 erreichbar sind (AntiSPAM Gateways, Proxys etc)
  • Latency =Zeit in Sekunden in der die Testmailbox wieder innerhalb des Postfachs gefunden werden muss, der Wert muss ggf je nach Umgebung höher oder niedriger gesetzt werden
  • IncludeExchangeReport =Ab Exchange Reporter Version 2.1 wird es die Möglichkeit geben, die Exchange Reports auch im Monitor anzuzeigen. Bis dahin bitte auf „nein“ belassen.

 

Voraussetzungen:

  • Exchange Server 2010/2013
  • Powershell 4
  • EWS API 2.2 (Download)

Change Log:

Version 2.0:

  • Erste öffentliche Version

Version 2.1:

  • diverse Bugfixes
  • Testmail Funktion verbessert
  • Möglichkeit eingefügt nur den Port des SMTP Gateways zu überwachen
  • Status der Datenbanken eingefügt

Bekannte Bugs:

– bisher keine, Probleme bitte per Kontaktformular melden

Download:

Exchange Monitor kann nach belieben angepasst und verwendet werden. Wenn Ihnen Exchange Monitor hilfreich erscheint, würde ich mich um eine Spende freuen.

 

65 Replies to “Exchange Monitor”

  1. Ich bekomms nicht zum Laufen, ebenso den Exchange Reporter nicht… bekomme aber keine Fehlermeldung. Gibt es noch irgendwelche Stolperfallen? Ich teste das Ganze an einem Server 2008 R2 mit Exchange 2013. Mir ist aufgefallen, dass die Anordnung der Anführungszeichen (einfach/zweifach) im Optionsstring für den Task Scheduler in den Anleitungen der beiden Programme unterschiedlich ist, obwohl der Optionsstring in etwa gleich aufgebaut ist – ist das korrekt?

  2. Hi, ist es auch möglich, das Skript von einem Server 2008 R2 aus zu starten?
    hab einen Exchange 2010 auf 2008 R2. Leider findet er den Pfad für die Exchange.webservices.dll nicht. Gibt’s den auf dem 2008 nicht?

  3. Hallo Frank,

    das Script ist, wie der Reporter auch, super. Bei meiner Testumgebung funktioniert es auch wunderbar, da habe ich nur 1 einzelnen Exchange 2013 auf 2012R2. In einer anderen Umgebung mit 3 Exchange 2010 Servern unter 2008R2 läuft das Script zwar auch, allerdings werden mir von den einzelnen Servern keine Daten angezeigt. Beim Aufruf der entsprechenden HTML-Dateien erscheint lediglich Exchange Dienst nicht gestartet.

    Liegt das daran das ich mehrere Exchange Server verwende?

  4. Hallo André,
    ich habe das Script ebenfalls immer mit mehreren Exchange Servern getestet (bis zu 8). Schau mal nach ob du auf allen Servern „enable-psremoting“ ausgeführt hast.

    Gruss, Frank

  5. Hallo Frank,

    ich erhalte beim Ausführen des Skripts noch Fehlermeldungen und die Ordnerstruktur unter ../exmon/Daten bleibt bis auf den Folder „SMTP“ leer.
    Beim Skript „Get-ExchangeTestMail.ps1“ scheint etwas schief zu laufen:

    >Sende Testmails…Ausnahme beim Aufrufen von „AutodiscoverUrl“ mit 1 Argument(en): „The >Autodiscover service couldn’t be located.“
    >n D:\exmon\Scripts\Get-ExchangeTestMail.ps1:7 Zeichen:1
    >+ $service.AutodiscoverUrl($testmailbox)
    >+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    > + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    > + FullyQualifiedErrorId : AutodiscoverLocalException
    >
    >Ausnahme beim Aufrufen von „Bind“ mit 2 Argument(en): „The Url property on the >ExchangeService object must be set.“
    >In D:\exmon\Scripts\Get-ExchangeTestMail.ps1:8 Zeichen:1
    >+ $inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,[Microsoft. …
    >+ >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>~~~~~~~~~~
    > + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    > + FullyQualifiedErrorId : ServiceLocalException

    Ich komme nur nicht dahinter, wo der Ansatz zu suchen ist.

    Ebenso wird meine AntiSpamRelay immer mit Fehler angezeigt, hier scheint die SMTP-Sequenz nicht zu stimmen (?): Das Relay nimmt aber sehr wohl eMails an (sonst hätte ich hier schon längst einen Riesenärger ;).

    >220 This is checkmate.precon.de. May I take your order, please?
    >500 5.5.4 Need sender domain
    >503 5.5.1 Bad sequence of commands
    >503 5.5.1 Bad sequence of commands
    >503 5.5.1 Bad sequence of commands
    >502 5.5.1 Command not implemented
    >502 5.5.1 Command not implemented
    >502 5.5.1 Command not implemented
    >221 2.0.0 Service closing transmission channel

    Ich würde mich über ein paar Ideen zur Lösungsfindung sehr freuen.

    Merci – viele Grüße
    Frank

  6. Hallo Frank,

    beim ersten Problem, kann Autodiscover nicht aufgelöst werden, fehlen da vielleicht entsprechende DNS-Einträge?
    Das zweite Problem schaue ich mir noch einmal an, ich habe da schon eine Idee.
    Gruß, Frank

  7. Hallo Frank,
    dein ExchangeMonitor ist wirklich ein tolle Sache.
    Danke!

    Ich hätte da noch einen Wunsch. Könntest du den Status der Mailboxkopien auf prüfen:
    ob der Status Healthy oder Mounted ist, sowie die CopyQueueLenght < 10 ist
    Get-MailboxServer | Get-MailboxDatabaseCopyStatus

    @ André Winkler: ich hatte das gleiche Problem wie du es beschrieben hast. Prüfe welche Version von Powershell bei dir installiert ist. Das Script benötigt Version 4 der Powershell damit alles richtig funktioniert.

    Ich habe auf einem eigenen Server die Exchange Management Tools installiert, dotNet 4.5 und Powershell 4.0 sowie die EWS API 2.2. Somit läuft das Script auf einem eigenen Server und ich musste auf meinen Produktionsservern nichts Ändern.

  8. Hallo zusammen,

    sorry ich hatte noch keine Zeit den Tip von Frank zu prüfen, gestern aber :-). Nach Enable-PSRemoting auf den restlichen Exchange Servern funktioniert das Auslesen jetzt. Allerdings habe ich das selbe Problem wie Frank Kabierschke. Auch unser Mailrelay hat ein Problem mit dem Telnet Sequenz. Es sieht so aus also ob nach dem Befehl „data“ so eine Bestätigung fehlt oder möglicherweise einfach eine Pause. Denn sofort nach data folgt die Eingabe des Textes, was unser Mailrelay auch nicht mag.

    Viele Grüße
    André

  9. Hallo Frank,

    versuche den Reporter zu installieren, Server Windows 2012 R2 (kein Exchange Server) + EWS API 2.2.
    Bekomme folgende Fehlermeldung:

    Starte Exchange Monitor
    Lade Funktionen aus Include-Functions.ps1: Fehler

    Viele Grüße

    Juergen

  10. Hallo Frank,
    Ein Supertool und nach einigen Anläufen auch schnell einsatzfähig. Danke.
    Hier noch ein paar Anregungen, falls nicht zu spät.
    – Ich erhalte solange das Script läuft Mails mit Zahlen darin. Vieleicht kann man das noch mit Inhalt und Betreff ausfüllen.
    – Interessant als Info sind auch die Anzahl der Postfächer, und welche davon die Größe bald überschreiten.

  11. Danke für das Lob, die Mails mit den Zahlen im Betreff dienen dazu den Mailfluss zu testen: Mail mit Betreff 12345678 an echo@tu-berlin.de schicken, beantworten lassen und prüfen ob eine Mail mit „Re: 12345678“ wieder im Postfach landet. Ich verwende für die Mails ein Dienst Postfach und habe eine Policy an dem Postfach, welches alle Elemente die älter als 1 Tag sind löscht. Ich denke in der nächsten Version werde ich aber einbauen, dass die Mails selbst durch das Script gelöscht werden.
    Exchange Reporter liefert eine Übersicht über die Postfächer die nahe dem Sendelimit sind, ich denke mal das sind Werte die man nicht zwingend alle paar Minuten abfragen muss :-)

    Gruß,
    Frank

  12. Hallo Frank

    Ich habe den ExchangeMonitor auf einem Windows Server 2008 R2 mit den erforderlichen SW-Voraussetzungen ausprobiert und bekomme es nicht richtig zum Laufen!

    Folgende zwei Hürden konnte ich überwinden:
    1. Die Meldung, die Jürgen Selz am 17.02.2015 23:06 berichtete, habe ich bei der Ausführung auch bekommen. Der Grund lag darin, dass ich unter -InstallPath schlicht den falschen Pfad angegeben hatte. Ich war drum im Glauben, dass ich einen Zielpfad für zu installierende Dateien angeben muss, dabei ist mit InstallPath offenbar der Pfad zu den Installationsdateien gemeint. Kaum gibt man den richtigen Pfad ein, funktioniert’s aber. ;-)
    2. Beim Ausführen kommt in der Position „Sende Testmails…“ die Powershell-Fehlermeldung „Add-Type : 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.0\Microsoft.Exchange.WebServices.dll“ kann nicht gefunden werden, da er nicht vorhanden ist.“ (–> Get-ExchangeTestMail.ps1 Zeile 3)
    Der Grund dafür ist, dass sich das EWS in den Ordner 2.2 installiert hat, nicht 2.0. Vielleicht sollte man die Existenz des EWS-Install-Ordners im Code ermitteln.

    Nun läuft es zwar prinzipiell, doch die einzigen Daten, die ich zurückbekomme, sind die SMTP-Gateways; bei allen anderen Punkten (wo in dem Beispielscreenshot FWEX1 und FWEX2 stehen) steht bei mir nichts. Enable-psremoting auf beiden Exchange-Servern (Server 2012 mit EXCH2013CU5) ausgeführt.

    Haben Sie eine Idee?

    Vielen Dank und freundliche Grüsse,
    Paul Hahn

  13. Nachtrag: logisch, dass es nicht klappt. Ich führe es auf einem Nicht-Exchange-Server aus und muss ja daher erst eine PSSession erstellen, damit ich die EXCH-Powershell-Befehle zur Verfügung habe.
    Das wäre doch auch noch ein cooles Feature, wenn man in der INI-Datei die Namen seiner Exchange-Server angeben könnte und bei Erstausführung wird eine PSSession dorthin etabliert.
    Jetzt scheint es tipptopp zu funktionieren, abgesehen von der SMS-Config, die ich noch anpassen muss.

  14. Hallo Paul,
    vielen Dank für dein Feedback. Ich werde eine Routine einbauen die den korrekten EWS Pfad ermittelt. Auf einem „Nicht-Exchange“ Server kannst du auch die Management Tools installieren. Dann funktioniert es auch ohne Remote PS Session. Aber die Idee optional die Exchange Server einzutragen, ist nicht schlecht. Ich denke das werde ich auch umsetzen. Danke noch einmal.

    Gruss, Frank

  15. Hallo,
    ich versuche es auf einem 2008 R2 Server mit installierten Exchange Management Tools zum Laufen zu bringen.
    allerdings erhalte ich beim Laden der Einstellungen aus Settings.ini: „Fehler“.

    An was liegt es?

  16. Hallo,

    ich bekomme beim Ausführen des Scriptes die Meldung das Dienste nicht laufen (laufen aber alle und stehen auch als „Running“ in den csv´s) und noch Meldungen beim import-csv.

    Aktualisiere Website… Fertig

    Verschicke Alarm per SMS:
    – Dienst läuft nicht
    Split : Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
    Bei D:\ExchangeMonitor\Scripts\HTMLEngine.ps1:548 Zeichen:32
    + $Dataname = $csvpath.Split <<<< ("\")[4]
    + CategoryInfo : InvalidOperation: (Split:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

    import-csv : Das Argument kann nicht an den Parameter "Path" gebunden werden, da es NULL ist.
    Bei D:\ExchangeMonitor\Scripts\HTMLEngine.ps1:559 Zeichen:28
    + $CSVStats = import-csv <<<< $CSVPath -delimiter ";" | sort checkpoint
    + CategoryInfo : InvalidData: (:) [Import-Csv], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ImportCsvCommand

    Split : Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
    Bei D:\ExchangeMonitor\Scripts\HTMLEngine.ps1:627 Zeichen:32
    + $Dataname = $csvpath.Split <<<< ("\")[4]
    + CategoryInfo : InvalidOperation: (Split:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

    import-csv : Das Argument kann nicht an den Parameter "Path" gebunden werden, da es NULL ist.
    Bei D:\ExchangeMonitor\Scripts\HTMLEngine.ps1:638 Zeichen:28
    + $CSVStats = import-csv <<<< $CSVPath -delimiter ";" | sort checkpoint
    + CategoryInfo : InvalidData: (:) [Import-Csv], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ImportCsvCommand

  17. Hi,

    danke für den Exchange Monitor, können wir die Schwellwerte für die Warteschlangen anpassen?

    DAnke

    Stefan

  18. Hallo Frank,

    schon mal vielen Dank für Deine Arbeit!

    Ich hätte darüber hinaus die folgenden Verbesserungsvorschläge:
    1. Kannst Du die aktuelle Uhrzeit und Datum anzeigen? Dann kann man sicher sein, dass die dargestellten Daten aktuell sind. Ich lasse das Skript beim Systemstart über die Aufgabenplanung starten. Wenn das mal nicht klappen sollte, sieht alles grün aus, obwohl es das möglicherweise nicht ist.
    2. Kann man den Punkt SMTP-Gateway ausblenden, wenn dieser in der Konfiguration nicht gesetzt ist?

  19. Nachtrag:
    Wenn man den OAB-Check ausschaltet, dann ist die Tabelle „Postfächer mit Um- oder Weiterleitungen“ unvollständig.

  20. Hi Frank

    Super Sache dieses Script – kannst du mir einen Hinwies geben, wo der Schwellenwert für den Diskspace angepasst werden könnte (nehme an im HTML-Engine unter #Space – aber ist das nun % oder was genau?)?
    Grüsse
    Reto

  21. Hallo Frank,

    danke für das sehr hilfreiche Skript. Ich habe jedoch folgende Fehlermeldungen:

    addsinfo.ps1
    Der RPC-Server ist nicht verfügbar
    oabreport.ps1
    Ausnahme beim Aufrufen von „DataBindXY“ mit 2 Argument(en): „Der Wert darf nicht NULL sein.
    Parametername: yValues“

    Hast Du eine Idee, wo der Fehler liegt?

    Danke und Gruß,
    Benjamin

  22. Dazu noch ein kleiner Vorschlag:

    Die Datenbank-Partitionen sind bei meinen Exchange-Servern nicht über Laufwerksbuchstaben, sondern über NTFS-gemountete Ordner bereitgestellt. Wäre echt schick, wenn das Reporting auch hier die Größe und den verfügbaren Speicherplatz ausgeben könnte.

    Viele Grüße,
    Benjamin

  23. Hallo Franky

    ich kriege den Monitor per Task nicht zum laufen. Es kommt aber auch kein Fehler. Das Skript läuft wenn man es manuell ausführt ohne Probleme. Ich habe es mit folgendem Aufruf per Task versucht
    Programm: powershell.exe
    Arguments: -command „“
    oder
    Arguments: -command „c:\Exchange Tools\Exchange Monitor\Start-ExchangeMonitor.ps1“

    Wenn ich den Task manuell starte öffnet sich nur kurz das PS Fenster und geht wieder zu. Keine Fehlermeldung.

    Über eine Hilfe wäre ich sehr dankbar ;-)

  24. Hallo Franky

    der Aufruf per Task geht jetzt. Es war der Parameter „InstallPath“ notwendig. Allerdings läuft das Skript dann dauerhaft im Hintergrund und die Häufigkeit, wie oft hier getestet wird und Mails verschickt werden ist mir fas etwas zu hoch.
    Gibt es eine Möglichkeit das anzupassen? So dass z.B. nur einmal in der Stunde geprüft wird oder alle 2 Stunden?

    Grüße
    Sebastian

  25. Hi,

    du kannst in der „Start-ExchangeMonitor.ps1“ in Zeile 159 den Wert für Sleep anpassen (Bsp: sleep 3600). Dann läuft es einmal in der Stunde.

    Vg Frank

  26. Hallo Frank,

    vielen dank für dieses Skript! Genial!
    Leider schlägt bei mir auch der Autodiscover fehl, und ich weiß ehrlich gesagt nicht wo ich anfangen muss zu suchen:
    Sende Testmails…Exception calling „AutodiscoverUrl“ with „1“ argument(s): „The Autodiscover service returned an error
    .“
    At C:\Tools\ExchangeMonitor\Scripts\Get-ExchangeTestMail.ps1:7 char:1
    + $service.AutodiscoverUrl($testmailbox)
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : AutodiscoverRemoteException

    Alles weitere funktioniert.
    Autodiscover auf meinen Clients läuft problemlos…

    Kann es sein das du die Autodiscover URL via get-AutodiscoverVirtualDirectory abfrägst?
    Die Autodiscover URL liegt doch eigentlich hier: get-clientaccesserver | FL autodiscverserviceinternaluri
    bei letztem steht bei mir auch die korrekte URL drin…

    Grüße
    Ben

  27. Eins noch, gibt es die möglichkeit im HTML Datum + Uhrzeit vom letzten Check anzeigen zu lassen?
    Und evtl. noch andere Infos direkt auf der Hauptseite, anstatt durch klick auf der zweiten Seite?

  28. Hi Ben,

    die Autodiscover URL wird per DNS ermittelt und nicht aus der Exchange Konfiguration gelesen. Du kannst das Script aber auch etwas abwandeln und den Exchange Server ohne Autodiscover ansprechen.
    Gruß, Frank

  29. Hallo Frank,

    ich habe das Autodiscover Problem mittlerweile Lösen können.
    Ich habe dazu im Get-ExchangeTestmail.ps1 die oberen Lines etwas bearbeitet:

    $service.Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials(„$testuser“,“$testuserpass“,“$testuserdomain“)
    $service.Url = New-Object URI(„https://myserver.mydomain.local/EWS/exchange.asmx“)

    $inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox)

    Wo es bei mir allerdings noch Fehlschlägt ist beim Mailflow… Dazu muss ich sagen ich setze derzeit zwei Exchange Server ein, 1×2010 1×2013.
    Ich sehe aber nur eine Exchange Testmail raus / reingehen… Irgendeine idee? Sonst ignoriere ich das bis zur fertigstellung der migration.

    Ben

  30. Hallo Ben, Hallo Frank,
    ich habe auch Probleme mit dem Autodiscover und habe die Lösung von Ben einmal probiert. Problem ist bei mir, dass ich nach der Zeile $inbox … eine Fehlermeldung erhalte. Diese lautet: „Für den gschützten SSL/TLS-Kanal konnte keine Vertrauensstellung hergestellt werden..“

    Frage ist wie kann ich die Vertrauensstellung herstellen?

    Schon einmal Danke im Voraus!
    Gruß
    Björn

  31. Hi Björn,
    das Zertifikat wird nicht akzeptiert, sollte sich beheben lassen, wenn das Zertifikat importiert wird, bzw. ein gültiges Zertifikat am Exchange zugewiesen wird.
    Gruß, Frank

  32. Hallo Frank,
    danke für deine Antwort. Zur Verständnis, warum wird hier ein Zertifikat benötigt, wenn der Befehl direkt auf dem Exchange ausgeführt wird?
    Selbstsegnierte – Zertifikate haben wir lediglich für die Clients ausgestellt.
    Danke und Gruß
    Björn

  33. Hallo Frank,

    bei mir verschwanden immer wieder im Exchange Monitor 2.1 aus der Rubrik ‚Warteschlangen‘ Server, weil in der HTMLEngine.ps1 nur Server mit Warteschlangen kleiner 7 oder größer 15 eingetragen (Zeile 223 ff) werden.
    Ich habe deshalb noch ein Stufe ‚Warning‘ dazwischen eingefügt, war wahrscheinlich von Dir auch mal so geplant -> nächste Version?

    Vielen Dank für die beiden Super Scripte!

  34. Hallo Frank,

    gibt es den Exchange Monitor auch für Exchange 2016 bzw. is es geplant?
    Ich habe den 2013 nun nicht unter 2016 getestet, ich wolle mich erst einmal vergewissern.

  35. Hi Leute,
    ich hab mal das Tool ausprobiert und bekomme bei „Get-ExchangeTestMail“ immer diese Fehlermeldung:
    “ Sende Testmails…Ausnahme beim Aufrufen von „AutodiscoverUrl“ mit 1 Argument(en): „A valid SMTP address must be specified.“
    In C:\ExchangeMonitor\Scripts\Get-ExchangeTestMail.ps1:7 Zeichen:1
    + $service.AutodiscoverUrl($testmailbox)
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ServiceValidationException

    Ausnahme beim Aufrufen von „Bind“ mit 2 Argument(en): „The Url property on the ExchangeService object must be set.“
    In C:\ExchangeMonitor\Scripts\Get-ExchangeTestMail.ps1:8 Zeichen:1
    + $inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,[Microsoft. …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ServiceLocalException“

    Ich hab auch schon die Methode von Ben ausprobiert, aber da bekomme ich die Fehlermeldung mit dem SSL/TLS, obwohl ein Zertifikat installiert ist.
    Außerdem funktioniert der SMS Versand nicht.
    Kann mir da jemand weiter helfen?

    Vielen Dank

  36. Hallo,
    Der Performace Monitor bei Exchange 2010 scheint in Deutsch nicht zu passen:
    #Outstanding RPC
    $RPCReq = (get-counter „\\$Servername\MSExchangeIS\RPC-Anforderungen“).countersamples.CookedValue

    Bringt Fehler und mit Perfom nicht zu finden. Liegt wohl mal wieder an der „eindeutschung“ der Counter.

  37. Hallo Frank,
    nicht nur deine Anleitungen zur Migration von Exchange sind genial, sondern auch dein Monitor.
    Also MS nehmt euch mal ein Beispiel.
    Weiter so. :-)

    Danke Frank

    VG
    Lars

  38. Hallo Franky,

    ich erhalte folgende Fehlermeldung:

    Starte Exchange Monitor
    Lade Funktionen aus Include-Functions.ps1: Fertig
    Lade Einstellungen aus settings.ini: Fertig
    Lade Exchange WebServices API 2.2: Fertig
    Lade Exchange Snapin:get-itemproperty : Der Pfad „HKLM:\SOFTWARE\Microsoft\ExchangeServer\Setup“ kann nicht gefunden werden, da er nicht vorhanden ist.
    In C:\Exchange Monitor\Scripts\Include-ExchangeSnapins.ps1:63 Zeichen:16
    + $repspath = (get-itemproperty HKLM:\SOFTWARE\Microsoft\ExchangeServer\$version …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (HKLM:\SOFTWARE\…ngeServer\Setup:String) [Get-ItemProperty], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemPropertyCommand

    Fehler

    PS C:\Exchange Monitor>

    Muss ich das Script auf dem Exchange Server selbst laufen lassen?

  39. Hallo Frank,

    seit langem mail wieder auf den Monitor geschaut und festgestellt das der Mailflow immer noch rot ist.
    Wie kann ich das denn am besten Untersuchen? Also wo es genau hakt?

    Die Mails an die TU gehen nämlich raus und rein…

    Grüße und schönes Wochenende,
    Ben

  40. Hallo Franky,

    erstmal wirklich tolle Arbeit die du da machst.
    Ich habe sowohl Monitor als auch Reporter auf einem 2010 Exchange erfolgreich am laufen.

    Auf einem 2012 Windows und 2016 Exchange bekomme ich es aber nicht zum laufen.
    Fehlermeldung:
    Ausnahme beim Aufrufen von „AutodiscoverUrl“ mit 2 Argument(en): „The Autodiscover service couldn’t be located.“

    Läuft es mit EX2016 generell nicht oder mache ich etwas falsch?

    Gruß
    Stefan

  41. Hallo Franky

    die Zeile 200 $servicename = $ in der HTMLEngine.ps1 produziert bei mir einen Fehler:
    „Die Benennung „$“ wurde nicht als Name eines Cmdlet, einer Funktion….“
    Das fällt allerdings nur auf wenn ein Dienst nicht läuft und so ein Alarm ausgelöst wird.
    Ich kann denn Zweck dieser Zeile nicht sehen und es funktioniert auch scheinbar alles wenn man sie auskommentiert.

    Gruß
    Marcus

  42. Ich warte schon sehnsüchtig auf den Exchange Monitor für Exchange 2016. Gibt es eine grobe Roadmap, wann dieser fertig sein könnte?

    Nun aber erst mal schönen Urlaub noch ;-)

    Viele Grüße
    Flo

  43. Hi Flo,
    ich plane eine generelle Überholung des Exchange Monitors, allerdings gibt es noch keinen Zeitplan (es mangelt aktuell an Zeit).

    Gruß, Frank

  44. Hallo Frank,

    danke für deine Super Arbeit.
    Ich habe den Tipp von Ben umgesetzt und die AutodiscoverURL geändert, leider bekomme ich immer noch den zweiten Fehler:
    Ausnahme beim Aufrufen von „Bind“ mit 2 Argument(en): „The Url property on the ExchangeService object must be set.“
    In C:\_install\Exchange Monitor_2.1\Exchange Monitor 2.1\Scripts\Get-ExchangeTestMail.ps1:8 Zeichen:1
    + $inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,[Microsoft. …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ServiceLocalException

    Kann mir hier evtl. noch wer einen Tipp geben.
    Danke
    Ronny

  45. Hallo Frank,

    gibt es denn die Möglichkeit in den Exchange Monitor das Auslesen der Größe von den Benutzerpostfächern zu integrieren?
    Die normale Abfrage läuft über diesen Befehl: Get-MailboxStatistics | select-Object displayname,totalitemsize | Sort-Object totalitemsize -Descending | Format-Table -AutoSize
    Irgendwie bekomme ich es nicht hin4, dass die Werte „Displayname“ und „Totalitemsize“ an die .csv übergeben werden. Der Ordner wird in der Unterstruktur erstellt und ebenfalls die Datei, aber leider nur mit den Überschriften „Displayname“;“Totalitemsize“ darunter geht es weiter mit „“;““.

    Danke im Voraus
    Grüße
    Ronny

  46. Hallo Frank,

    super Sache, Dein Monitor! Habe ein Problem:
    Bei mir bleibt der Mailflow immer rot und es erscheint die Meldung „Verschicke Alarm per SMS: EX01 – Mailübermittlung gestört“.
    Wie kann ich feststellen woran es hakt?

    Grüße und vielen Dank
    Marita

  47. Hallo Frank,

    super Seite und noch bessere Tool!
    Habe genau das gleiche Problem wie Marita und Marcel…

  48. Hallo Frank,
    ich habe ebenfalls neuerdings das gleiche Problem wie Marita, Marcel und Andy.
    Die Mail an echo@tu-berlin.de wird mit dem Betreff „Testmail SMTP“ verschickt und eine Antwort landet auch im Postfach. Aber das Skript scheint die Antwort nicht auszuwerten.
    Auffällig ist, dass die Antworten als Betreff nur noch „Re:“ haben. Der ursprüngliche Betreff ist nicht mehr enthalten.

  49. Ok, das Betreff-Problem konnte ich selbst lösen. In Test-SMTPServer.ps1 in Zeile 57:
    Ersetze „subject: Testmail SMTP“ durch „Subject: Testmail SMTP“
    Dadurch interpretiert der Echo Mailer der TU den Betreff korrekt. Anscheinend werten die das Case-Sensitiv aus.

    Der Mailflow Test bleibt aber immer noch rot und dazu konnte ich feststellen, dass die Test-Mail gar nicht versendet wird.
    Der Fehler muss irgendwo in Get-ExchangeTestMail.ps1 in Zeile 27 liegen.
    In unserem SMTP-Proxy finde ich die ganzen „Testmail SMTP“ E-Mails, aber keine einzige mehr mit einer Radom-Zahl im Betreff.

  50. Für mich konnte ich das Problem durch eine kleine Änderung im Script lokalisieren und letztendlich dadurch auch lösen.
    In Get-ExchangeTestMail.ps1 in Zeile 27:
    Alt: $mail = send-mailmessage -smtpserver $servername -from $testmailbox -to $echomail -subject $subject -ea 0
    Neu: $mail = send-mailmessage -smtpserver $servername -from $testmailbox -to $echomail -subject $subject -ErrorAction Continue
    Dadurch wird der Fehler angezeigt, aber das Script bricht trotzdem nicht ab. Mit der angezeigten Fehlermeldung könnt ihr euch auf die Suche begeben.

  51. Hallo Christian,

    ich hatte ja das Problem mit der Testmail und hab es inzwischen gelöst. Bei mir lags am autodiscover… Hab zwar noch nicht rausgefunden was dort falsch eingestellt ist, aber ich hab das Skript angepasst.
    in der Get-ExchangeTestMail.ps1 in Zeile 7
    $service.AutodiscoverUrl(„$testmailbox“)
    durch
    $service.Url = New-Object URI („https://meinexchange.meinedomain.de/ews/exchange.asmx“)
    ersetzt.
    Seitdem hab ich keinen Fehler mehr und es funktioniert.

  52. Hallo Frank,

    erstmal, super Seite und habe dank deiner Hilfe die Migration von Exchange 2010 zu Exchange 2016 ohne Probleme durchführen können;-)

    Hast du mittlerweile einen Zeitplan, wann der Monitor auf dem Ex2016 läuft?

    Viele Grüße aus dem Saarland
    Matze

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.