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