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:
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:
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:
- 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.
Der Link zum Download von „EWS API 2.2“ führt aktuell ins leere (404)
Der Monitor ist super! Vielen Dank dafür erstmal.
Hier noch ein Feature Request: Ein Exclude in der settings.conf um einzelne Server raus zu nehmen, wenn man mal ein CU installiert oder so. Sonst kommt ja dauernd die Meldung dass dort Dienste nicht laufen oder sonstige Fehlermeldungen von dem Server, der im Wartungsmodus ist.
Hallo zusammen,
seit dem letzten Update (Exchange Server 2016 CU18) funktioniert das Überprüfen
des Mailflows nicht mehr.
Das Script gibt folgenden Fehler aus:
Prüfe Dienste… Fertig
Sende Testmails…Ausnahme beim Aufrufen von „Bind“ mit 2 Argument(en): „The request failed. Der Remoteserver hat eine
n Fehler
zurückgegeben: (401) Nicht autorisiert.“
In C:\Monitoring\Exchange Monitor 2.1\Scripts\Get-ExchangeTestMail.ps1:13 Zeichen:1
+ $inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service, …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ServiceRequestException
Kann mir hier jemand weiterhelfen?
Besten Dank im Voraus.
Viele Grüsse
Tom
Hallo Franky,
ich versuche gerade den Monitor 2.1 unter einem Exchange 2016 zu installieren und erhalte beim Ausführen den Fehler
Starte Exchange Monitor
Lade Funktionen aus Include-Functions.ps1: Fehler (nicht gefunden)
Gibt es da einen Fix für?
Gruß
René
Moin Frank
gibt’s den Monitor noch oder auch für Exchange 2016 oder ist alles in den Reporter migriert worden?
Danke und Gruß
Chrishan
Hallo Frank,
dein Script ist sehr hilreich. Danke, dass du es mit uns teilst!
Ich setze Exchange 2016 auf Server 2016 ein. Einige Probleme konnte ich mit Hilfe dieses Threads bereits lösen und kann hiermit eventuell auch mal weiterhelfen.
### Beim Fehler „BIND…2Arguments“ hilft bei mir der Eintrag der internen EWS URL beim Bypass
____InternalNLBBypassUrl : https://xserver.domain.local/EWS/Exchange.asmx
### …Performace Monitor bei Exchange Englisch/Deutsch-Problem Outstanding RPC
funktioniert bei mir wenn statt
ALT: $RPCReq = (get-counter „\\$Servername\MSExchangeIS\RPC-Anforderungen“).countersamples.CookedValue
NEU: $RPCReq = (get-counter „\\$Servername\MSExchange RpcClientAccess\RPC-Anforderungen“).countersamples.CookedValue
einträgt.
bereits erhaltene Hilfe aus Thread:
— „Echo Eintrag. TU-Berlin hat diesen Dienst in 2018 eingestellt. Nach Recherchen habe ich jetzt mal „echo@univie.ac.at“ eingetragen, das scheint…“
— AUTODISCOVER: …habe dazu im Get-ExchangeTestmail.ps1 die oberen Lines etwas bearbeitet:
$service.Url = New-Object URI(„https://myserver.mydomain.local/EWS/exchange.asmx“)
— …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…
Meine Frage:
Bei Exchange 2016 sind einige Dienste nicht gestartet (bei mir POP, IMAP,…) das führt natürlich immer zu dem bereits berichteten Fehler
xxxxxxxxxxx – Mailübermittlung gestört
$ : The term ‚$‘ 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 D:\Exchange_Monitor\Scripts\HTMLEngine.ps1:200 char:20
+ $servicename = $
+ ~
+ CategoryInfo : ObjectNotFound: ($:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Sag mir doch bitte, was in Zeile „$servicename = $“ erwartet wird, damit kein Fehler kommt.
Schönen Resttag noch.
VG Hans
Erstmal:
Super Script!!
Ich habe nur ein Problem …
Im Falle eines Fehlers möchte das Script eine SMS Senden, was nicht geht da diese Funktion nicht eingerichtet ist …
Demzufolge wirft das Script auch noch folgenden Fehler:
$ : Die Benennung „$“ 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.
In C:\ExchangeMonitor\Scripts\HTMLEngine.ps1:200 Zeichen:20
+ $servicename = $
+ ~
+ CategoryInfo : ObjectNotFound: ($:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Gibt es die Möglichkeit den SMS Versand einfach abzustellen?
VG David
Der Exchange Client von GData 14.2 lässt sich hier auf der CU12 mit aktuellem Patch nicht mehr installieren und reklamiert eine fehlende EWS-API. Setzt man den reg-Schlüssel, läuft das setup, scheitert aber am Auffinden des Management-Servers. Soll jetzt der Schlüssel wieder rein oder bleibt er draussen. Eine Lösung von GData habe ich auch noch nicht bekommen.
Ich forste gerade unseren Spamfilter durch und es stellt sich heraus, daß manche Mails an
unseren Echomailer quasi unbehelligt durchgehen, andere aber technisch wirklich sehr
minimalistisch sind und haarscharf an einer Abweisung vorbeischrammen.
Bei den Echomails von Exchange Monitor sehe ich:
MISSING_DATE(1) – kein Date: Header
MISSING_MID(2.5) – keine Message-ID (was interessant ist, sollte die nicht das getestete Mailsystem gerade erzeugen?)
MISSING_TO(2) – kein To: Header
MISSING_FROM(2) – kein From: Header
Da das Script möglichst „naturgetreue“ Mails erzeugen sollte wäre es gut, wenn To:, From: und Date: Header erzeugt würden.
Hallo Ralf,
vielen Dank für deinen Hinweis. Das Script nutzt die Funktion „Send-MailMessage“ der PowerShell und verschickt die Mails über den lokalen Mailserver. Die Header sollten hier also eigentlich passen. Ich könnte mir allerdings vorstellen, dass manche Anwender das Script etwas abgewandelt haben und es sich hierbei um die Portchecks handelt (in der INI Datei unter AddSmtpServers und OnlyCheckIfSMTPPortOpen), ohne TO und FROM kannst du ja auch relativ wenig mit der Mail anfangen :-)
Gruß, Frank
Hallo Franky,
ich bekomme einen komischen Fehler:
Verschicke Alarm per SMS:
xxxxxxxxxxx – Mailübermittlung gestört
$ : The term ‚$‘ 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 D:\Exchange_Monitor\Scripts\HTMLEngine.ps1:200 char:20
+ $servicename = $
+ ~
+ CategoryInfo : ObjectNotFound: ($:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Irgend eine Idee?
Die initialen 10 Minuten sind durch das erste Senden bedingt (vermute ich mal), danach sollte es sehr schnell gehen. Außer die Kiste raucht, wenn uns wieder Yahoo! mit Groups-Mailings zuschüttet.
Ja, fragen ist sehr nett – ich brauch halt einen Ansprechpartner, falls mal etwas Amok laufen sollte.
Hallo zusammen,
hatte bis gerade eben das gleiche Problem wir ihr…
Ich bin dann auf meiner Recherchenach einer Lösung auf den echo(at)charite.de gestoßen. Der gibt, wie der abgeschaltet Echo der TU, den gesendeten Betreff mit zurück.
Also muss man nur in der Settings den Echo-Mailer austauschen und es geht wieder…
Hallo Andy,
vielen Dank für den Hinweis. Ich habe es gerade ausprobiert, die Mail benötigt bei mir ca. 10 Minuten bis zur Antwort, da müssten vielleicht die TimeOuts noch etwas höher gestellt werden, aber sonst funktioniert es wunderbar. Bitte auch die Nutzungsbedingung beachten:
If you want to use this service for routine monitoring, you *MUST* ask postmaster(at)charite.de for permission before doing so.
Gruß,
Frank
Hallo,
also bei mir kommt gar nichts mehr zurück, da es das Postfach nach der Umstellung nicht mehr gibt.
Komisch, dass du eine Antwort bekommst…
echo@tu-berlin.de
mfilter-186-1-3.mx.srv.dfn.de #<mfilter-186-1-3.mx.srv.dfn.de #5.1.1 smtp; 550 5.1.1 : Recipient address rejected: undeliverable address: host exchange.tu-berlin.de[130.149.7.70] said: 550 5.1.1 User unknown (in reply to RCPT TO command)> #SMTP#
Alle im Wiki genannten Echo-Mailer geben leider immer den gleichen Betreff aus, so das diese so nicht auszuwerten sind. Mal sehen ob Frank etwas neues findet.
Nochmals Danke für das Script!
Jens
Hi,
es gibt noch ein paar verbleibende Echo Mailer, aber wie Jens schon richtig bemerkt hat, der Betreff ist immer gleich und macht es daher schwierig die Antwort auf eine Testmail in den Message Tracking Logs zu finden. Ich schaue mal, ob ich es anders lösen kann.
Gruß,
Frank
Hi, erst einmal danke für dieses tolle Script.
Ich hatte auch das Problem mit dem Mailflow und der Meldung „Verschicke Alarm per SMS: EX01 – Mailübermittlung gestört“.
Ich habe dann mal mit Get-MessageTrackingLog geschaut was denn da zurück kommt. Dabei ist mir aufgefallen das im Subject kein „Re“ vorhanden ist welches aber im Script „Get-ExchangeTestMail.ps1“, Zeile 30, erwartet wird.
Habe nun bei mir die Zeile 30 angepasst.
Alt: $resubject = „Re: “ + „$subject“
Neu: $resubject = „$subject“
Nun wird auch der Mailflow ausgewertet und Grün angezeigt.
Gruß
Mike
Hi. Die TU Berlin scheint seit heute ihren Echo-Mailer umgstellt zu haben.
Siehe: http://www.tubit.tu-berlin.de/menue/it_service_center/
Wir brauchen einen „anderen“ Echo Mailer, der auch den Betreff zurücksendet. Die Kandidaten aus dem Wikipedia Artikel tun das leider nicht….
Hallo markus, Hallo Alexander,
ich schaue mal ob ich eine Alternative dazu finde.
Gruß, Frank
Hallo Frank,
super Tool – aber auch wir bräuchten dringend die 16er Version. Ist das noch auf der Roadmap oder ist die Weiterentwicklung eingestellt?
Chris
Hallo Frank,
die neue Version ist genial und läuft absolut stabil unter ex2013.
Vielen Dank und viele Grüße – weiter so :-)
Matze
Hallo Frank,
sehr gutes Tool, danach habe ich die ganze Zeit gesucht. :-)
ich benötige evtl. noch die Servercomponentstate Statis, da wir auf unserem Cluster einige Proxys überwachen müssen, da diese gerne mal auf inactive gestellt werden.
Danke und Gruß aus Bad Homburg
Andy
Hallo Frank,
ich bin auch sehr angetan von deinen super Leitfäden und dem Autodiscover Whitepaper. Jetzt fehlt zu meinem Glück nur noch der Exchange Monitor für Exchange 2016.
Deshalb schließe ich mich mal der Frage von Matze an, gibt es einen Zeitplan zur Überarbeitung?
Schöne Grüße aus Münster
Kim
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
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.
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.
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.
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.
Hallo Frank,
super Seite und noch bessere Tool!
Habe genau das gleiche Problem wie Marita und Marcel…
Hallo Frank,
super Tool. Habe leider das gleiche Problem wie Marita.
Hast du eine Idee?
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
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
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
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
Hi Flo,
ich plane eine generelle Überholung des Exchange Monitors, allerdings gibt es noch keinen Zeitplan (es mangelt aktuell an Zeit).
Gruß, Frank
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
Ich glaube, es sollte $NULL heisse, da die Variable danach in der Schleife nicht mehr genutzt wird und andere servicevariablen auch auf NULL gesetzt werden. Wie in anderen Posts scheint es auch zu reichen die Zeile auszukommentieren.
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
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
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?
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
Sollten Counter fehlen, einfach mal die Counter erstellen, dann klappts..
lodctr /R
Alex
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.
Hallo, den gleichen Fehler habe ich auch, gibt es hier schon eine Lösung?
Selber Fehler auch unter Exchange 2016 (mit Windows Server 2016 als OS)
lodctr /R hat leider nichts gebracht…
Fehler:
get-counter : Das angegebene Objekt wurde nicht auf dem Computer gefunden.
In C:\ExchangeMonitor\Scripts\Get-ExchangePerfData.ps1:27 Zeichen:15
+ … $RPCReq = (get-counter „\\$Servername\MSExchangeIS\RPC-Anforderungen …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidResult: (:) [Get-Counter], Exception
+ FullyQualifiedErrorId : CounterApiError,Microsoft.PowerShell.Commands.GetCounterCommand
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
Is this script support on exchange 2007 SP2 running on windows server 2003 SP2
Hi,
i’m sorry, but this script will not work with Exchange 2007 and/or Windows Server 2003.
regards, Frank
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.
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!
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
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
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
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
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?
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
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
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
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
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 ;-)
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
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
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
Nachtrag:
Wenn man den OAB-Check ausschaltet, dann ist die Tabelle „Postfächer mit Um- oder Weiterleitungen“ unvollständig.
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?
Hi,
danke für den Exchange Monitor, können wir die Schwellwerte für die Warteschlangen anpassen?
DAnke
Stefan
Hallo Frank,
danke für die Hilfe. Mit der beta funktionierts.
Gruß Marco
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
Hallo Marco,
sieht so aus, als ob die CSVs nicht gefunden/importiert werden können. Liegt scheinbar daran, dass die Variable $CSVPath leer ist. Könntest du bitte einmal die Beta Version testen? Dort müsste das Problem behoben sein:
https://www.frankysweb.de/exchange-monitor-2-1-beta/
Gruß, Frank
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?
Hallo,
Sind ungültige Werte in der Settings.ini? Ggf. Leerzeichen hinter den Werten?
Gruß, Frank
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.
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
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
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.
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
Sorry, Exchange Monitor und nicht den Reporter
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
Hallo Jürgen,
kannst du mal einen Screenshot schicken? Wie hast du das Script gestartet?
Gruss, Frank
.\start-exchangemonitor.ps1 -installpath C:\…. gestartet
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é
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.
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
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
Hallo Frank,
das Thema ist ja schon etwas älter. Ich versuche es aber auch gerade zu implementieren und bekomme die selbe Fehlermeldung. Autodiscover ist korrekt konfiguriert und die URL’s werde auch ausgeliefert.
Gibt es hierzu eigentlich eine Lösung ?
Weiterhin ist in der Default Konfig Datei ja ein Echo Eintrag. TU-Berlin hat diesen Dienst in 2018 eingestellt. Nach Recherchen habe ich jetzt mal „echo@univie.ac.at“ eingetragen, das scheint zu funktionieren.
Gruß Stefan
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?
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
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?
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?
Genial, DANKE