Managing calendar permissions in Exchange Online

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

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.