UPDATE 6/4/2012: Clarified that the new version of the tool will run on Exchange 2010 SP1 and later.
Six or seven years ago, I was faced with several cases where the permissions on public folders had been made non-canonical by programs running against the M: drive. This was back in the Exchange 2000 days when IFS was still around, and it exposed the M: drive by default. At the time, the only fix we had for this situation was a painful manual process that had to be done one folder at a time. Since I was trying to learn C# at the time, I decided to write a tool to do a bulk fix as a learning exercise. That tool became PFDAVAdmin, so named because it used WebDAV to access and make changes to public folders, and because I kind of saw it as the successor to the old pfadmin/pfinfo tools. The tool soon grew to incorporate other functionality, including exporting/importing permissions and replica lists, exporting properties, enumerating items, accessing mailboxes, etc. PFDAVAdmin gained wide usage in Exchange Support, and an updated version was later released publicly. It wasn’t a pretty or polished tool, but it was extremely good at dealing with certain customer scenarios.
A few years later, PFDAVAdmin began showing its age. It had been written for .NET Framework 1.1, and because of Framework 2.0’s more restrictive XML parsing, I could not easily move it to the new Framework. It also relied on the presence of certain directory objects which were always there in Exchange 2000 and 2003, but were associated only with the CAS role in 2007.
With the recent release of Exchange 2010, WebDAV is gone from Exchange, so PFDAVAdmin is no longer an option at all. A lot of the things you used to be able to accomplish only in PFDAVAdmin can now be done at the command line. For instance, Get-PublicFolder and Set-PublicFolder can be used to export and import permissions and replica lists, while Get-MailboxFolderPermission and Set-MailboxFolderPermission can be used to export and import mailbox permissions. However, there are still a few things you just can’t do without PFDAVAdmin-like functionality.
Fortunately, we have a solution – a tool called ExFolders. This new tool is really just a port of PFDAVAdmin to Exchange 2010. We changed the name to ExFolders because it no longer relies on DAV, and it’s not just for public folders (even PFDAVAdmin, in its public release, was not just for public folders). The name just didn’t make sense anymore, so we changed it to the easier-to-pronounce ExFolders.
For better or worse, ExFolders still has the same user interface as PFDAVAdmin, so things will look very familiar. However, there are a few changes I want to highlight.
- ExFolders must be run from an Exchange 2010 server – it cannot be run from a workstation as PFDAVAdmin could. It can connect to Exchange 2010 or Exchange 2007, but not older versions.
- Remove Item-Level Permissions is gone, because there are no item-level permissions in Exchange 2007 or 2010.
- DACL fix functionality is gone. With no WebDAV and no M: drive, non-canonical DACLs should be practically unheard of.
- Permissions export format between PFDAVAdmin and ExFolders are compatible.
There are also a few new features:
- Folder property imports are now supported. You were able to do folder property exports with PFDAVAdmin, but not imports.
- Item property exports are supported – that is, you can export a set of properties from all items in a folder. This feature request has come up again and again for troubleshooting purposes. Item property imports are not supported.
- ExFolders supports the new free/busy permissions that were introduced in Exchange 2007 and Outlook 2007.
- You can now connect to multiple mailbox stores at the same time, so you can run a batch operation against several mailbox stores or all mailboxes in the org if you need to.
Be sure to check out the readme for more details. While there is no official support for the tool, feel free to comment here or send me an email (bilong AT Microsoft DOT com), and I will try to address them as time allows. However, make sure you read the readme first – there are a few known issues, and if you don’t run the tool as specified, it will probably crash. Did I mention you should read the readme?