

If you close the shell and you need to see the summary results again, use the -SummarizePreviousResults switch.\SourceSideValidations -SummarizePreviousResults Once completed, we can rerun SourceSideValidations to make sure all the issues are resolved. Fortunately, this is another one that is easy to fix, as the script provides a command. This might need to be adjusted manually in some cases, but here I didn't have to.įinally, the script says we have 9,850 invalid permissions. I also confirm the new object has the same email address as the old one. For this lab, I decide I do want the folder to be mail-enabled, so I remove the orphaned MailPublicFolder and then mail-enable the folder. We need to decide whether we want the folder to receive email or not. The folder says MailEnabled is False, yet we have a MailPublicFolder which points to it. The CSV file gives us the DN of the mail object and the entry ID of the folder, which we can use to examine the two objects. For this type of problem, we need to examine the folder and figure out what we want to do. The script tells us we have a mail public folder object for a public folder that is mail-disabled. Now that the names are fixed, we move on to the next item. We can copy and paste the command it gave us, let it run, and then spot check the result. Filtering for that in the CSV, we see the folders.įortunately, the script gives us a command we can run to fix all the names. The output tells us these have a ResultType of SpecialCharacters. The next thing it calls out is that 4 folders have problematic characters in the name. The script is just giving us information. If we want to see the list of empty folders, we can open up ValidationResults.csv in Excel, filter for a ResultType of EmptyFolder, and then we see all those results:įor these folders, no action is required. In this example output, the script calls out four issues.įirst, it points out that we have 111,124 folders that are completely empty (this is a lab).

When all the tests are done, the script provides a summary of what it found, along with example commands that fix some issues. The final test, which checks permissions, will usually take much longer than the other tests. Progress indicators are displayed as it collects data and validates the results. Typically, the script should be run with no parameters. The permission does not refer to a valid entity. The folder is mail-enabled, but it has no Active Directory object.Īn Active Directory object exists, but it is not linked to any folder.Īn Active Directory object exists, but it points to a public folder which points to a different object.Īn Active Directory object exists, but it points to a public folder that is mail-disabled. The folder is a system folder, which should not be mail-enabled. The folder is not mail-enabled, but it has the GUID of an Active Directory object in its MailRecipientGuid property. The items directly in this folder (not child folders) add up to more than 25 GB. The folder has more than 1,000,000 items. There are more than 250,000 total folders if you count both the folders and their dumpsters. There are more than 250,000 total folders in the hierarchy. The folder path is greater than 299 folders deep. The folder and all its child folders (recursive) have no items. The folder has more than 10,000 direct child folders. Test CategoryĭumpsterEntryId is null, or the dumpster is not in \NON_IPM_SUBTREE\DUMPSTER_ROOT, or the DumpsterEntryId of the dumpster does not point back to the folder. The ValidationResults.csv can be filtered by ResultType to identify the respective folders. The script will display a summary of what it found, and in many cases it will provide an example command that uses input from this file to fix the problem. This is file we want to examine to understand any issues found. Running with -StartFresh $false loads this file instead of retrieving fresh dataĮntryID, item count, and size of every folderĪ subset of properties of all System Folders File NameĪ subset of properties of all Public Folders The others are purely for saving time on subsequent runs. Usually the only one we care about is ValidationResults.csv. The script will generate the following files. SourceSideValidations.ps1 -SummarizePreviousResults SourceSideValidations.ps1 -RemoveInvalidPermissions For Exchange 2010, please use previous script found here. This script performs pre-migration public folder checks for Exchange 2013, 2016, and 2019.
#Exchange public folder permissions powershell download#
Download the latest release: SourceSideValidations.ps1
