Mit "Search-Mailbox" Emails älter als ein bestimmtes Datum filtern

  • Hallo zusammen!


    Ich habe ein kleines Problem mit dem CMDlet "Search-Mailbox" genauer gesagt mit dem SearchQuery.


    Ziel ist es alle Emails zu filtern bzw. in eine TargetMailbox/TargetFolder zu kopieren welche älter als 01.01.2014 sind.


    Nun habe ich mir den Syntax zu dem Befehl angeschaut und über einen Technet-Artikel folgenden Befehl erstellt:

    Code
    Search-Mailbox [QUELL-MAILBOX] -SearchQuery Received:>=$('12/31/2013') -TargetMailbox [ZIEL-MAILBOX] -TargetFolder "ergebnis" -LogLevel Full


    Leider funktioniert der Befehl überhaupt nicht. Es wird nichts gefunden!


    Kann mir jemand von euch sagen wie die korrekte SerarchQuery ist ich finde im Internet fast nichts dazu und bei allen Beispiel-Codes komm nicht das Ergebnis das ich benötige.


    Danke im voraus für eure Tips!


    Lg Jochen

    • Offizieller Beitrag

    Moin,


    bekommst Du beim ausführen eine Fehlermeldung?


    Was steht im Eventlog, da sollten Start und Ende des Befehls eigentlich protokolliert sein.


    Und wenn das ein deutsche Server ist: leider sind auch die Querys eingedeutscht worden, d.h. es heißt nicht "Received" sondern "empfangen", oder "erhalten" oder irgendwas anderes deutsches.

  • Hallo Robert!


    Danke für deine Antwort.


    Der Server ist English aber das Format ist Deutsch (Österreich).


    Am Bildschirm bekomme ich keine Fehlermeldung nur das nichts gefunden wurde aber im Eventlog habe ich was gefunden:
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Microsoft.Exchange.Data.Search.AqsParser.ParserException: The KQL parser threw an exception. ---> Microsoft.Ceres.InteractionEngine.Processing.BuiltIn.Parsing.ParseException: syntax error at position 0, Unable to parse ''12/31/2013'' as an absolute datetime value' using cultures 'de-AT' and ''. at Microsoft.Ceres.InteractionEngine.Processing.BuiltIn.Parsing.Kql.DateUtils.ParseAbsoluteDate(String value, CultureInfo culture, ITimeZoneConverter tzConverter, Int32 pos) at Microsoft.Ceres.InteractionEngine.Processing.BuiltIn.Parsing.Kql.DateUtils.ParseDate(String value, DateTime nowUtc, CultureInfo culture, ITimeZoneConverter tzConverter, Int32 pos) at Microsoft.Ceres.InteractionEngine.Processing.BuiltIn.Parsing.Kql.QueryTreeBuilder.Visit(AstPropertyNode astNode) at Microsoft.Ceres.InteractionEngine.Processing.BuiltIn.Parsing.Kql.QueryTreeBuilder.Visit(AstAndNode astNode) at Microsoft.Ceres.InteractionEngine.Processing.BuiltIn.Parsing.Kql.KqlParser.Parse(String query, ParsingContext context, String& searchTerms) at Microsoft.Exchange.Data.Search.KqlParser.KqlParser.Parse(String query, ParseOption parseOption, CultureInfo cultureInfo, LocalizedKeywordMapping keywordMapping) --- End of inner exception stack trace --- at Microsoft.Exchange.Configuration.Tasks.Task.ThrowTerminatingError(Exception exception, ErrorCategory category, Object target) at Microsoft.Exchange.Management.Tasks.SearchMailbox.InternalEndProcessing() at Microsoft.Exchange.Configuration.Tasks.Task.<EndProcessing>b__8() at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)
    5
    Microsoft.Ceres.InteractionEngine.Processing.BuiltIn.Parsing.ParseException: syntax error at position 0, Unable to parse ''12/31/2013'' as an absolute datetime value' using cultures 'de-AT' and ''. at Microsoft.Ceres.InteractionEngine.Processing.BuiltIn.Parsing.Kql.DateUtils.ParseAbsoluteDate(String value, CultureInfo culture, ITimeZoneConverter tzConverter, Int32 pos) at Microsoft.Ceres.InteractionEngine.Processing.BuiltIn.Parsing.Kql.DateUtils.ParseDate(String value, DateTime nowUtc, CultureInfo culture, ITimeZoneConverter tzConverter, Int32 pos) at Microsoft.Ceres.InteractionEngine.Processing.BuiltIn.Parsing.Kql.QueryTreeBuilder.Visit(AstPropertyNode astNode) at Microsoft.Ceres.InteractionEngine.Processing.BuiltIn.Parsing.Kql.QueryTreeBuilder.Visit(AstAndNode astNode) at Microsoft.Ceres.InteractionEngine.Processing.BuiltIn.Parsing.Kql.KqlParser.Parse(String query, ParsingContext context, String& searchTerms) at Microsoft.Exchange.Data.Search.KqlParser.KqlParser.Parse(String query, ParseOption parseOption, CultureInfo cultureInfo, LocalizedKeywordMapping keywordMapping)
    False
    0 objects execution has been proxied to remote server.
    0
    ActivityId: 7a3db98a-cd68-42e7-b20f-a89dcd4c6aec
    ServicePlan:;IsAdmin:True;

    en-US
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


    Jetzt habe ich mit folgendem Format versucht aber da bekomme ich eine Email und die ist vom 09.01.2016 was ja auch nicht stimmen kann.

    Code
    Search-Mailbox [QUELL-MAILBOX] -SearchQuery Received:<=$("31.12.2013") -TargetMailbox [ZIEL-MAILBOX] -TargetFolder "ergebnis"  -LogLevel Full
  • Hi,


    1. Wenn du ÄLTER als 01.01.2014 suchst, dann solltest du natürlich auch "<=" (KLEINER-GLEICH) verwenden ;)
    (älter = kleiner als, neuer = größer als)


    2) Verwende das DE-AT Datumsformat und lass das $()-Zeug weg. Das Cmdlet erkennt das Datum auch so:


    Code
    Search-Mailbox MAILBOX -SearchQuery 'received:<=01.01.2014' ...

    Nachtrag: OK, hatte deinen letzten Befehl nicht gelesen, sieht ja ähnlich aus. Aber versuchs nochmal mit meinem...


    mfg, exocheck

    Mfg, exocheck

    Einmal editiert, zuletzt von exocheck ()

  • Hallo!


    Danke für deine Antwort! Ich habe nun den Befehl wie folgt ausgeführt:

    Code
    Search-Mailbox [QUELL-MAILBOX] -SearchQuery 'received:<=01.01.2014' -TargetMailbox [ZIEL-MAILBOX -TargetFolder ergebnis -LogLevel Full

    Jetzt werden 81 Items gefunden aber das sind alles aktuelle und ausschließlich die von mir zuvor ausgeführten Testes zum Search-Mailbox Emails vom letzten Samstag bis heute!


    Ich weis nicht was ich da falsch mache!

  • Ich habe nun einmal nach dem Betreff

    Code
    Search-Mailbox [QUELL-MAILBOX] -SearchQuery Subject:"TEST" -TargetMailbox o_kampel -TargetFolder "ergebnis"  -LogLevel Full


    und einmal nach einem bestimmten Empfagsdatum

    Code
    Search-Mailbox [QUELL-MAILBOX] -SearchQuery Received:"02.04.2012" -TargetMailbox [ZIEL-MAILBOX] -TargetFolder "ergebnis"  -LogLevel Full

    gesucht.


    Beides funktionierte einwandfrei!
    Mir wurden genau die Emails in meine Mailbox kopiert die dem Suchkriterium entsprochen haben.

    • Offizieller Beitrag

    Der Stand ist ja ok.


    Ansonsten kann ich leider nur immer wieder feststellen, dass Search-Mailbox ein Kramp ist. Die Doku ist schlecht, die Beispiele gehen oft wegen Lokalisierung nicht und gute Fehlermeldungen gibt es auch nicht.


    Wahrscheinlich bleibt Dir nichts anderes übrig, als Try&Error oder den Support ansprechen.