ferrari-fan 10 Geschrieben 8. November 2013 Melden Teilen Geschrieben 8. November 2013 Hallo zusammen, ich habe folgende Aufgabe bekommen: ich soll alle Mailadressen sammeln, an die wir schreiben und zwar an alle unsere Partner weltweit. Zweck des ganzen ist es einen Mailverteiler aufzubauen, wo wir unseren Partnern mitteilen, wenn in Deutschland ein Feiertag und daher das Büro nicht besetzt ist. Unsere Partner senden uns deren Feiertage ebenso. Nach vielem Suchen über Google bin ich auf Get-MessageTrackingLog gestoßen und habe mir folgenden Befehl erstellt: Get-MessageTrackingLog –Start (Get-Date).AddHours(-1) –Resultsize Unlimited -EventId "Send" | Where-Object {$_.sender –like "*@meinedomain.de"} > C:\mailadress.txt Das funktioniert im Prinzip schon mal, aber ich habe noch einige Punkte zur Verbesserung: 1. Zum Testen frage ich ja nur die Daten der letzten Stunde ab. Wie finde ich heraus, wie weit die Logs zurückgehen? 2. Wie kann ich die Ausgabe beinflussen? Ich bekomme jetzt 5 Spalten, von denen mich eigentlich nur die Spalte Recipients interessiert. Wer die Mails gesendet hat oder der Betreff interessieren mich nicht. 3. Das Problem in der Ergebnisdatei ist auch, dass die Spalte Recipients zu schmal ist und manche Adressen nicht vollständig erscheinen, sondern mit ... enden. 4. Das dritte Problem ist, dass manchmal ja mehrere Empfänger in der Spalte Recipients stehen. Bekomme ich die auch irgendwie einzeln? Ist das mit Get-MessageTrackingLog überhaupt der richtige Ansatz oder gibt es da was besseres? Ich kenne mich weder mit Powershell, noch mit Exchange besonders gut aus, daher verzeiht bitte meine Fragen. Vielen Dank. Joschi Zitieren Link zu diesem Kommentar
RobertWi 81 Geschrieben 8. November 2013 Melden Teilen Geschrieben 8. November 2013 1. Zum Testen frage ich ja nur die Daten der letzten Stunde ab. Wie finde ich heraus, wie weit die Logs zurückgehen? Führe in der EMC folgenden Befehl aus: Get-TransportServer SERVERNAME | fl *Tracking* Danach siehst Du, wie lange die Log-Dateien aufbewahrt werden - Standard sind 30 Tage. 2. Wie kann ich die Ausgabe beinflussen? Ich bekomme jetzt 5 Spalten, von denen mich eigentlich nur die Spalte Recipients interessiert. Wer die Mails gesendet hat oder der Betreff interessieren mich nicht. Get-MessageTrackingLog –Start (Get-Date).AddHours(-1) –Resultsize Unlimited -EventId "Send" | Where-Object {$_.sender –like "*@meinedomain.de"} | Select-Object Recipients > C:\mailadress.txt 3. Das Problem in der Ergebnisdatei ist auch, dass die Spalte Recipients zu schmal ist und manche Adressen nicht vollständig erscheinen, sondern mit ... enden. Sollte sich mit dem Befehl oben ändern. BTW: Ich würde das Schreiben in die Datei lieber mit Export-CSV durchführen, also: Get-MessageTrackingLog –Start (Get-Date).AddHours(-1) –Resultsize Unlimited -EventId "Send" | Where-Object {$_.sender –like "*@meinedomain.de"} | Select-Object Recipients | Export-CSV C:\mailadress.txt 4. Das dritte Problem ist, dass manchmal ja mehrere Empfänger in der Spalte Recipients stehen. Bekomme ich die auch irgendwie einzeln? Prinzipiell schon, aber nicht mit einem Aufruf. In dem Feld stehen immer alle Empfänger drin und es ist ein mehrwertiges Objekt. Das kann man zwar auftrennen, aber nicht mehr in einem Einzeiler. Ist das mit Get-MessageTrackingLog überhaupt der richtige Ansatz oder gibt es da was besseres? Das ist schon OK. Du kannst auf das SMTP-Protokoll auswerten, müsstest das aber per Hand machen. Ich kenne mich weder mit Powershell, noch mit Exchange besonders gut aus, daher verzeiht bitte meine Fragen. Ein Forum ist kein guter Ort, die absoluten Grundlagen der PowerShell zu lernen. Mit dem ersten Befehl oben findest Du den Ort der Log-Dateien heraus. Das CSV-Dateien im Textformat, als eventuell hast Du für Dich auch ein besseres Werkzeug (Excel, o.ä). Zitieren Link zu diesem Kommentar
ferrari-fan 10 Geschrieben 11. November 2013 Autor Melden Teilen Geschrieben 11. November 2013 Hallo Robert, erst mal Danke für die ausführliche Antwort. Das hat mir schon sehr weitergeholfen. Das Trennen der einzelnen Mailadressen in einer Zeile kann ich auch nachgelagert machen, das sollte nicht das Problem sein. Allerdings wird in einer Zeile bei mehreren Mailadressen auch wieder die Zeile abgeschnitten, heißt endet nach ca. 120 Zeichen mit ... Kann man da noch was machen oder muss ich damit leben? Beim zweiten Befehl, dem Export als CSV bekomme ich folgendes Ergebnis: #TYPE Selected.Microsoft.Exchange.Management.TransportLogSearchTasks.MessageTrackingEvent "Recipients" "System.String[]" "System.String[]" "System.String[]" "System.String[]" "System.String[]" "System.String[]" ..... Ist schon klar, dass das hier kein guter Ort ist um die Basics der Powershell zu lernen. Ich habe aber sonst damit eigentlich keine Berührungspunkte und hoffe, dass es bald wieder einen Kollegen hier gibt, der sich mit Exchange und mit Powershell auskennt. Viele Grüße Joschi Zitieren Link zu diesem Kommentar
ferrari-fan 10 Geschrieben 15. November 2013 Autor Melden Teilen Geschrieben 15. November 2013 Hallo, kann mir hier keiner weiterhelfen??? Viele Grüße Joschi Zitieren Link zu diesem Kommentar
RobertWi 81 Geschrieben 16. November 2013 Melden Teilen Geschrieben 16. November 2013 Moin. Select-Object -ExpandProperty Recipients dann hast Du alle Empfänger untereinander. Eine andere Darstellung geht mit einfachen Mitteln nicht. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.