Eine Suche mit Wildcards führt man entweder bei einer globalen Suche durch, oder wenn der Suchbegriff noch nicht, oder nur teilweise, bekannt ist.
Bei Letzterem werden meistens mehrere Suchvorgänge mit angepassten Kriterien durchgeführt um die gesuchten Daten „einzukreisen“.
Um nicht bei jeder Suche das MessageTrackingLog neu auszulesen, kann man die „Basis“-ausgabe für die Suche in eine Variable schreiben.
In der Exchange-Management-Shell wird, wie im Beitrag Exchange2010 Nachrichtenverfolgung: Suche mit Wildcards (Teil 1) beschrieben, die Suche mit Wildcards durch das „pipen“ der Ausgabe vom MessageTrackingLog an weiterführende Befehle ausgeführt.
Bei einer Suche über einen größeren Zeitraum dauert dies allerdings ein wenig.
Um nicht jedesmal eine Wartezeit bei jeder Suche über den gleichen Datenbestand zu erhalten, kann man die erste (Basis-)Suche in eine frei definierbare Variable schreiben.
Ich nenne diese Variable einfach „suche“.
So lautet der zu verwendende Befehl z.B.:
1 |
[PS] C:\>$suche = Get-MessageTrackingLog -start "12/18/2014" -end "12/21/2014 14:00:00" -eventid "RECEIVE" -resultsize unlimited |
Das Ergebnis der Variable „suche“ kann einfach durch Eingabe der Variable ausgegeben werden.
1 |
[PS] C:\>$suche |
Diese Ausgabe lässt sich nun genauso „weiterverarbeiten“ wie eine Ausgabe direkt von MessageTrackingLog.
Eine Suche nach gesendeten Mails zu allen Adressen von gmx.de(net/com/..) könnte lauten:
1 |
[PS] C:\>$suche | where{$_.recipients -like "*@gmx.*"} |
Da in dieser Variable alle Ausgabewerte des MessageTrackingLog abgelegt sind, kann auch hier die Ausgabe mit dem „select“-Befehl weiter formatiert werden.
Ein Beispiel:
1 |
[PS] C:\>$suche | where{$_.recipients -like "*@gmx.*"} | select timestamp,eventid,sender,messagesubject, messageid |
Hauptsächlich bei der mehrfachen Suche in einem großen (statischen) Zeitbereich innerhalb des MessageTrackingLog’s, wird hier die Ausgabe enorm beschleunigt.
Jedoch ist man auf den Datenpool der ersten Abfrage – zur Füllung der Variable – abhängig. Was hier ausgeschlossen wurde, kann natürlich auch nicht durchsucht werden.
Kleine Anmerkung zum Schluß:
Das Löschen der Variable erfolgt durch
1 |
[PS] C:\>Clear-variable -Name suche |