Message Tracking Using Exchange 2010 Shell Only Works With US Date Format

7 Flares Twitter 0 Facebook 1 Google+ 4 LinkedIn 1 Pin It Share 0 StumbleUpon 1 Filament.io 7 Flares ×

If you use a date format other than US (mm/dd/yyyy), the message tracking cmdlet (Get-MessageTrackingLog) in Exchange 2010 fails.

Let’s walk through an example to prove this with Exchange 2010 SP2 UR3 at the backend. I have sent an email to my wife today (14th Oct) at 20:41.

Email to be traced

A simple Get-MessageTrackingLog command with the sender and recipients parameter brings the desired output.

Track messages without dates

When the cmdlet is extended by specifying a time frame (dd/mm/yyyy), it returns the following error message.

Message tracking fails

Cannot process argument transformation on parameter ‘Start’. Cannot convert value "14/10/2012 20:38" to type "System.DateTime". Error: "String was not recognized as a valid DateTime."

If I run the same command with 14th Oct in US format (10/14/2012), Exchange displays the message trace.

Message tracking works in US time format

In short, unless you use the mm/dd/yyyy format for date with the Get-MessageTracingLog cmdlet, you are not going much further with the trace ;)

Is this a bug? Has anyone come across this before? Any workarounds?

Join 2,300+ of your peers for daily article updates by email.

7 Flares Twitter 0 Facebook 1 Google+ 4 LinkedIn 1 Pin It Share 0 StumbleUpon 1 Filament.io 7 Flares ×

10 thoughts on “Message Tracking Using Exchange 2010 Shell Only Works With US Date Format

  1. Percy J

    This is just a guess. could that be because of the date setting of the OS? (MM/DD/YYYY)
    Im here in the states so….

    Reply
  2. Zoltan Erszenyi

    Yes, I have come across it lots of times as in Australia the date format is dd/mm/yyyy.

    Since it doesn’t affect functionality, I wouldn’t consider it a bug. Instead it appears to be an unfinished localization issue, considered by MS not sufficiently important to complete.

    Never took the effort to look up possible references. I just accepted the fact and used it with US dates.

    Zoltan

    Reply
    1. Rajith Enchiparambil Post author

      Hi Zolta,

      Given that MS releases language packs and Exchange 2010 install itself in a number of languages, this should be fixed. I know it is a minor issue, but people do use Shell for advanced query.

      Thanks

      Reply
  3. Paul Cunningham

    Yep, seems to be the way it is.

    I wrote an article with some examples of searching time/date ranges in message tracking logs:
    http://exchangeserverpro.com/searching-message-tracking-logs-by-time-and-date-range

    I don’t run into that little quirk too often because normally I use Get-Date to specify relative time/date rather than fixed ones.

    But one way to get around any awkwardness with the US time format is to use Get-Date to set a variable with the start/end time + date that you want, then use the variable in the Get-MessageTrackingLog command.

    Eg,

    [PS] C:\>$date = Get-Date “17/9/2012 12:00:00″

    [PS] C:\>Get-MessageTrackingLog -Start $date -End $date.AddHours(8) -ResultSize unlimited

    Reply
  4. sahal

    Hello Sir,
    its mentioned in the help info for get-messagetrackinglog cmdlet. that the -start vaule should be in specific format.
    any way nice to learn this.

    Reply
  5. Michael B. Smith

    I explained the official workaround on linked-in (use [datetime]::Parse( ) ).

    That being said, to be clear, MS is not insisting on a “US date format” but what they call a “culture invariant” date format. It just so happens that this is the en-US date format. :) A picky difference, to be sure, but relevant.

    There are a number of cmdlets, not just in Exchange, where this occurs. It isn’t a bug, it is “works as designed and intended”. Arguably, the documentation could be improved.

    Regards,
    Michael B. Smith
    Consultant and Exchange MVP

    Reply

Your Thoughts?