After a recent question from somebody I've made some more changes to the Export-EXCContactFolder function to allow you to if your exporting a Public Folder or a mailbox's Contacts Folder to recurse any subfolders of that folder you passed in and export those contacts also. When this option is selected a field is added to the CSV to tell you which MailboxFolder (or PublicFolder) the contact was exported from.
To use this new feature when exporting contacts from a Public folder just use the recurse switch eg
Export-EXCContactFolder -PublicFolderPath "\Office Contacts" -Recurse -MailboxName email@example.com -FileName c:\temp\alc2.csv
Another parameter I've added is the -RecurseMailbox which will instead of starting at the default Contacts Folder in a Mailbox it will now start at the Mailbox root, iterate ever folder in the Mailbox and do a CSV export of any contacts in any folders in the Mailbox as long as those folder aren't hidden (a hidden folder generally indicates this is an Outlook System Folder so not something you want to process). Eg
Export-EXCContactFolder -RecurseMailbox -MailboxName firstname.lastname@example.org -FileName c:\temp\alc2.csv
One last fix was to switch to using UTF8 encoding in the CSV so if your exporting contacts with non Ascii character it will now support this instead of showing a bunch of ???
The updated code is available on GitHub and I've also now published the Module here in the PowerShell Gallery To install the module from the gallery just use