Applies to: Exchange Server 2013, Exchange Online

Topic Last Modified: 2012-12-07

Use the Get-MessageTrackingReport cmdlet to return data for a specific message tracking report. This cmdlet is used by the delivery reports feature.

For information about the parameter sets in the Syntax section below, see Syntax.


Get-MessageTrackingReport -Identity <MessageTrackingReportId> [-BypassDelegateChecking <SwitchParameter>] [-DetailLevel <Basic | Verbose>] [-DomainController <Fqdn>] [-DoNotResolve <SwitchParameter>] [-RecipientPathFilter <SmtpAddress>] [-Recipients <String[]>] [-ReportTemplate <Summary | RecipientPath>] [-ResultSize <Unlimited>] [-Status <Unsuccessful | Pending | Delivered | Transferred | Read>] [-TraceLevel <Low | Medium | High>]



This example gets the message tracking report for messages sent from one user to another. This example returns the summary of the message tracking report for a message that David Jones sent to Wendy Richardson.

Copy Code
$Temp = Search-MessageTrackingReport -Identity "David Jones" -Recipients ""
Get-MessageTrackingReport -Identity $Temp.MessageTrackingReportID -ReportTemplate Summary 


This example gets the message tracking report for the following scenario: The user Cigdem Akin was expecting an email message from that never arrived. She contacted the Help desk, which needs to generate the message tracking report on behalf of Cigdem and doesn't need to see the display names.

This example searches the message tracking data for the specific message tracking reports, and then returns detailed troubleshooting information for the specific recipient path.

Copy Code
Search-MessageTrackingReport -Identity "Cigdem Akin" -Sender "" -ByPassDelegateChecking -DoNotResolve | ForEach-Object { Get-MessageTrackingReport -Identity $_.MessageTrackingReportID -DetailLevel Verbose -BypassDelegateChecking -DoNotResolve -RecipientPathFilter "" -ReportTemplate RecipientPath }

Detailed Description

The Get-MessageTrackingReport cmdlet requires you to specify the ID for the message tracking report you want to view. Therefore, first you need to use the Search-MessageTrackingReport cmdlet to find the message tracking report ID for a specific message. You then pass the message tracking report ID from the output of the Search-MessageTrackingReport cmdlet to the Get-MessageTrackingReport cmdlet. For more information, see Search-MessageTrackingReport.

You need to be assigned permissions before you can run this cmdlet. Although all parameters for this cmdlet are listed in this topic, you may not have access to some parameters if they're not included in the permissions assigned to you. To see what permissions you need, see the "Message tracking" entry in the Mail Flow Permissions topic.


Parameter Required Type Description




The Identity parameter specifies the ID of the message tracking report ID to retrieve.

You should run the Search-MessageTrackingReport cmdlet to find the message tracking report ID for the specific message you're tracking, and then pass the value of the MessageTrackingReportID field to this parameter.




The BypassDelegateChecking switch allows Help desk staff and administrators to retrieve message tracking reports for any user. You don't have to specify a value with this switch.

By default, each user can only see the message tracking reports for messages sent or received by the user. When you use this switch, Exchange allows you to view the message tracking reports for message exchanges among other users.




The DetailLevel parameter specifies the amount of detail to be displayed for the message tracking report. You can use one of the following values:

  • Basic

  • Verbose

If you specify Basic, simple delivery report information is displayed, which is more appropriate for information workers. If you specify Verbose, full report information is displayed, including server names and physical topology information.




The DomainController parameter specifies the fully qualified domain name (FQDN) of the domain controller that retrieves data from Active Directory.




The DoNotResolve switch prevents the resolution of email addresses to display names. This improves performance, but the end result may not be as easy to interpret because it's missing the display names. You don't have to specify a value with this switch.




The RecipientPathFilter parameter specifies the recipient for which the command returns the detailed tracking report.

Use this parameter when you're using the RecipientPath report template.




The Recipients parameter specifies the recipients for whom you want to retrieve the message tracking data.

You can use this parameter to specify the recipients in the report details if you're using the Summary report template.




The ReportTemplate parameter specifies a predefined format for the output. You can either return a summary for all recipients or a detailed tracking report for one recipient. You can specify one of the following values:

  • RecipientPath

  • Summary




The ResultSize parameter specifies the maximum number of results to return. If you want to return all requests that match the query, use unlimited for the value of this parameter. The default value is 1000.




The Status parameter specifies the delivery status codes you're interested in. You can specify one of the following values:

  • Delivered

  • Read

  • Pending

  • Transferred

  • Unsuccessful




The TraceLevel parameter specifies whether additional trace details are included in the output of the message tracking report. This parameter is intended to be used when troubleshooting message tracking issues.

The acceptable values for the TraceLevel parameter are:

  • Low   Minimal additional data is returned, including servers that were accessed, timing, message tracking search result counts, and any error information.

  • Medium   In addition to the data returned for the Low setting, the actual message tracking search results are also returned.

  • High   Full diagnostic data is returned.

Input Types

To see the input types that this cmdlet accepts, see Cmdlet Input and Output Types. If the Input Type field for a cmdlet is blank, the cmdlet doesn’t accept input data.

Return Types

To see the return types, which are also known as output types, that this cmdlet accepts, see Cmdlet Input and Output Types. If the Output Type field is blank, the cmdlet doesn’t return data.