Skip to main content

Calendar Permissions

Exchange Online – Calendar Permissions & Processing

This page provides a consolidated reference for managing calendar access, delegation, and processing in Exchange Online using PowerShell.


πŸ“˜ Connecting to Exchange Online

Before running any calendar commands, connect to the Exchange Online PowerShell module:

Connect-ExchangeOnline -UserPrincipalName [email protected]

πŸ‘ View Calendar Permissions

List current permissions for a user’s primary calendar:

Get-MailboxFolderPermission "UserName:\Calendar"

View calendar permissions for all users:

Get-Mailbox -RecipientTypeDetails UserMailbox | ForEach-Object {
    Get-MailboxFolderPermission "$($_.PrimarySmtpAddress):\Calendar" | Select Identity, User, AccessRights
}

βž• Add Calendar Permissions

Permission Type Command Example Description
Reviewer Add-MailboxFolderPermission "UserName:\Calendar" -User [email protected] -AccessRights Reviewer Can view full details of calendar items
Editor Add-MailboxFolderPermission "UserName:\Calendar" -User [email protected] -AccessRights Editor Full read/write control
AvailabilityOnly Add-MailboxFolderPermission "UserName:\Calendar" -User [email protected] -AccessRights AvailabilityOnly Shows free/busy info only
LimitedDetails Add-MailboxFolderPermission "UserName:\Calendar" -User [email protected] -AccessRights LimitedDetails Shows time, subject, and location

βž– Remove Calendar Permissions

Remove-MailboxFolderPermission "UserName:\Calendar" -User [email protected]

Remove all permissions for a specific calendar:

Get-MailboxFolderPermission "UserName:\Calendar" | Where-Object {$_.User -ne "Default" -and $_.User -ne "Anonymous"} | ForEach-Object {
    Remove-MailboxFolderPermission "UserName:\Calendar" -User $_.User
}

πŸ” Modify Existing Permissions

Change a user’s calendar access level:

Set-MailboxFolderPermission "UserName:\Calendar" -User [email protected] -AccessRights Reviewer

πŸ‘₯ Default & Anonymous Permissions

Set what all internal users or external users see:

Set-MailboxFolderPermission "UserName:\Calendar" -User Default -AccessRights AvailabilityOnly
Set-MailboxFolderPermission "UserName:\Calendar" -User Anonymous -AccessRights None

Check existing defaults:

Get-MailboxFolderPermission "UserName:\Calendar" | Where-Object {$_.User -eq "Default" -or $_.User -eq "Anonymous"}

🧩 Delegate Access (Send on Behalf / Manage Meeting Requests)

Add Delegate

Add-MailboxFolderPermission "Manager:\Calendar" -User [email protected] -AccessRights Editor
Set-Mailbox -Identity "Manager" -GrantSendOnBehalfTo [email protected]

Remove Delegate

Remove-MailboxFolderPermission "Manager:\Calendar" -User [email protected]
Set-Mailbox -Identity "Manager" -GrantSendOnBehalfTo $null

βš™οΈ Calendar Processing Settings

Control automatic meeting request processing:

View Current Settings

Get-CalendarProcessing "UserName"

Enable Auto-Accept and Decline Conflicts

Set-CalendarProcessing "UserName" -AutomateProcessing AutoAccept -AddOrganizerToSubject $true -DeleteComments $false -DeleteSubject $false -AddAdditionalResponse $true

Disable Auto-Processing (Manual)

Set-CalendarProcessing "UserName" -AutomateProcessing None

Resource Mailboxes (Rooms/Equipment)

Set-CalendarProcessing "Room Name" -AutomateProcessing AutoAccept -AllowConflicts $false -BookingWindowInDays 180 -EnforceSchedulingHorizon $true

πŸ“Š Quick Reference Summary

Task Command Notes
View calendar permissions Get-MailboxFolderPermission "User:\Calendar" Lists all assigned permissions
Add Reviewer Add-MailboxFolderPermission "User:\Calendar" -User [email protected] -AccessRights Reviewer Grant read-only view
Remove Access Remove-MailboxFolderPermission "User:\Calendar" -User [email protected] Removes user access
Default Availability Set-MailboxFolderPermission "User:\Calendar" -User Default -AccessRights AvailabilityOnly Default org-wide setting
Auto Accept Meetings Set-CalendarProcessing "User" -AutomateProcessing AutoAccept Enables auto-acceptance
View Calendar Processing Get-CalendarProcessing "User" Check resource or user mailbox rules

🧰 Tips

  • To apply settings across multiple mailboxes:
    Get-Mailbox -RecipientTypeDetails UserMailbox | ForEach-Object {
        Set-CalendarProcessing $_.Alias -AutomateProcessing AutoAccept
    }
    
  • Always verify changes with:
    Get-MailboxFolderPermission "User:\Calendar"
    

Updated: {{ date }}
Author: Tomas Toohey
Reference Category: Exchange Quick References