Introduction

Current version: 1.1.4

This script can be used to list all the named properties, and the items containing those named properties, in a mailbox.  It is intended for use in clearing invalid properties (e.g. too many created with the same name or same Guid).

Description

This script must be run within an Exchange Management PowerShell session, but this can be a remote session.  This script does require the ManagedStoreDiagnosticsFunctions.ps1 script to work, and this must be copied from an Exchange server (it can be found in the Public folder of the Exchange installation, and will also work remotely).

For an example of how this script is intended to be used, please see the related blog post.  I will update documentation as time allows in case there are further questions.

Parameters

One of MailboxServer, MailboxDatabase, or Maibox is required.

-MailboxServer If specified, all mailboxes on the specified server will be processed.
-MailboxDatabase If specified, all mailboxes within the specified database will be processed.
-Mailbox If specified, the single mailbox will be processed.
-Archive If set, the archive mailbox will be processed (otherwise primary mailbox will be accessed).  Only applies when mailbox is specified.
-Restartable If set, the script will read the EntryId dump file from any previous runs and will not search for messages if that has previously been done for a particular property.
-SaveRestartInfoInterval This value determines how often the found EntryIds are dumped while the script runs.  The default is that the information is saved at 50 item interval (i.e. every time 50 items are identified, the file will be saved).
-DumpPropsIfTotalExceeds If more than this number of named properties are found, they will be dumped to DumpPropsPath as an Xml file.  The default is 0.
-SearchNamedProp The name of the property to search for.  This supports wildcard *, so if you are searching for all named properties that start with "BadNamedProp", you can use "BadNamedProp*".  This would match BadNamedProp1, BadNamedProp2, etc.
-SearchGuid The Guid of the property to search for.
-NamedPropType The MAPI type of the property (e.g. 001f is a string).  This must be specified as four digits.
-DumpPropsPath The path where output files are saved.
-DumpEntryIds If this switch is specified, then the mailbox will be searched for items that have each identified named property.  This can take a very long time, as a search needs to be done for every property that was found.
-PowerShellUrl The PowerShell Url for the Exchange remote session (if not already loaded) - you'll be prompted for credentials if necessary.
-LogFile The log file.