Sharing users calendars is one of the most used parts of an Exchange Server(which is included in most of the business versions of Office 365), this feature allows others inside of your organisation to view or edit calendars.
The old school way of doing this was to go around to each user and set the permissions directly on the calendar by right clicking on it and selecting properties, then navigating to the permissions tab where you could set the permissions for each user or group over the calendar.
But there is a better way. We can use PowerShell to set these permissions in bulk on either exchange or office 365.
So what are the different exchange calendar permission levels?
Straight out of the box calendars come with a bunch of preset permission levels, this makes your life easier because you can allow a bunch of different controls over the calendars from not being able to see them or being able to set users to be able to book meetings and delete meetings if needed. The different permission levels are as follows:
- None – FolderVisible
- Owner – CreateItems, ReadItems, CreateSubfolders, FolderOwner, FolderContact, FolderVisible, EditOwnedItems, EditAllItems, DeleteOwnedItems, DeleteAllItems
- PublishingEditor – CreateItems, ReadItems, CreateSubfolders, FolderVisible, EditOwnedItems, EditAllItems, DeleteOwnedItems, DeleteAllItems
- Editor – CreateItems, ReadItems, FolderVisible, EditOwnedItems, EditAllItems, DeleteOwnedItems, DeleteAllItems
- PublishingAuthor – CreateItems, ReadItems, CreateSubfolders, FolderVisible, EditOwnedItems, DeleteOwnedItems
- Author – CreateItems, ReadItems, FolderVisible, EditOwnedItems, DeleteOwnedItems
- NonEditingAuthor – CreateItems, ReadItems, FolderVisible
- Reviewer – ReadItems, FolderVisible
- Contributor – CreateItems, FolderVisible
What are the PowerShell commands used to manipulate calendar permissions?
The basic PowerShell commands you can use to edit the permissions of calendars are(each one has a link to the official Microsoft documentation):
- Add-MailboxFolderPermission
- Get-MailboxFolderPermission
- Remove-MailboxFolderPermission
- Set-MailboxFolderPermission
Notice that all of the commands are to do with MailboxFolderPermission, this is because Exchange actually treats the calendar as a folder, so whatever we are doing to the calendar we are actually doing to an exchange folder.
Using PowerShell to Edit Calendar Permissions
So now lets get into it, if you are using Microsoft Exchange installed on your server then you can just open the Exchange PowerShell application, if you are using Office 365 you will need to first connect to office 365 in PowerShell, you can follow the instructions in that article to connect.
Once you are connected to exchange in PowerShell it is time to run some commands.
Getting a users calendar permissions
To get a users calendar permissions we will use the Get-MailboxFolderPermission command in PowerShell.
Get-MailboxFolderPermission -Identity [email protected]:\Calendar -User [email protected]
Some final notes and recommendations with folder sharing in office 365
- When setting permissions it is best not to set owner permissions for the calendars as this will allow other users to delete the calendar on someone else’s mailbox. This could lead to a real headache as the users calendar will just disappear and they wont know why.
- Setting PublishingEditor permission will allow users to have all permissions except to delete the actual calendar.
- Setting default sharing is usually a pretty handy thing in smaller businesses that are using the service. This will allow for more collaboration and a more open workplace.