By default, calendars in Exchange Online will only show the free/busy status with no details about the appointment when viewing other users’ calendars. If you want to know how modify this then look no further.
Calendar permissions can only be changed through PowerShell (as an admin – users can delegate access to their own calendars by themselves). Luckily, that doesn’t have to be so complicated. Changing the default setting is actually quite simple and can be done with one line of PowerShell code.
Changing the default calendar permissions for one user
First we need to connect to Exchange Online through PowerShell. Run the commands below and sign in with a global admin account.
$LiveCred = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
Import-PSSession $Session
Then run the following command to alter the default access rights.
Set-MailboxFolderPermission -Identity <EmailAddress>:\Calendar -User Default -AccessRights <AccessRight>
<EmailAddress>: Primary e-mail address of the mailbox
<AccessRight>: One of the access rights from the list below, for example Reviewer
If you want to give a specific user permissions to a mailbox, simply replace “Default” with the UPN of the user you wish to grant access. You can also give permissions to security groups.
Note: The name of the calendar folder is dependent on the language of the mailbox and you might have to change this. In order to get the name of the calendar folder you can run the command below
(Get-MailboxFolderStatistics -Identity <EmailAddress> | Where-Object {$_.FolderType -eq "Calendar"}).Name
Changing the default calendar permissions for all users
Edit the $DefaultAccessLevel variable to your preference and run the script below in order to alter the default calendar permissions for all users. The script might take a while to run depending on the number of mailboxes in your environment. When prompted, sign in with a global administrator for your Office 365 tenant.
#Connect to Exchange Online
$LiveCred = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
Import-PSSession $Session
#Get all mailboxes
$mailboxes = Get-Mailbox -ResultSize Unlimited
#Permission level
$DefaultAccessLevel = "Reviewer" #Edit this line
foreach($mailbox in $mailboxes){
$mailboxId = $mailbox.alias
$folderId = $mailboxId + ":\" + (Get-MailboxFolderStatistics -Identity $mailboxId | Where-Object {$_.FolderType -eq "Calendar"}).Name
#Set the permissions
Set-MailboxFolderPermission -Identity $folderId -User Default -AccessRights $DefaultAccessLevel
}
Access Rights
- 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