I’ve had a note in my “blog about me” file for a month or two to call out the way to access Exchange “System Folders” with PowerShell cmdlets. I just went out and looked and there appears to be a couple of websites/posts (and probably others) that have already mentioned this briefly in their examples, but I think it still bears repeating as an independent post here.
If you use “Get-PublicFolder” cmdlet with no identity specified, it’ll assume that you want to see Public Folders from the IPM_SUBTREE (the traditional MAPI public folder hierarchy). However, there are perfectly reasonable scenarios for Get/Set-Public folder that involve the System Folders part of the hierarchy (the NON_IPM_SUBTREE — ie, the free busy folders, legacy OAB folder, etc… these are also sometimes called the “Site Folders”).
Well, the NON_IPM_SUBTREE is somewhat hidden. You have to explicitly call out the identity in order to access it. Even if you specify an identity of “\”, you’ll still only get the IPM_SUBTREE results.
So, if you want to get all of the public folder objects within the NON_IPM_SUBTREE, you can use syntax like this:
Get-PublicFolder \NON_IPM_SUBTREE -recurse
Simple, and even fairly easy to remember. But, to me at least, hard to figure out the first time I needed it. Hopefully this post will help someone who’s looking for these objects!