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:
```powershell
Connect-ExchangeOnline -UserPrincipalName youradmin@domain.com
```
---
## π View Calendar Permissions
List current permissions for a userβs primary calendar:
```powershell
Get-MailboxFolderPermission "UserName:\Calendar"
```
View calendar permissions for **all users**:
```powershell
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
```powershell
Remove-MailboxFolderPermission "UserName:\Calendar" -User someone@domain.com
```
Remove **all permissions** for a specific calendar:
```powershell
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:
```powershell
Set-MailboxFolderPermission "UserName:\Calendar" -User someone@domain.com -AccessRights Reviewer
```
---
## π₯ Default & Anonymous Permissions
Set what all internal users or external users see:
```powershell
Set-MailboxFolderPermission "UserName:\Calendar" -User Default -AccessRights AvailabilityOnly
Set-MailboxFolderPermission "UserName:\Calendar" -User Anonymous -AccessRights None
```
Check existing defaults:
```powershell
Get-MailboxFolderPermission "UserName:\Calendar" | Where-Object {$_.User -eq "Default" -or $_.User -eq "Anonymous"}
```
---
## π§© Delegate Access (Send on Behalf / Manage Meeting Requests)
### Add Delegate
```powershell
Add-MailboxFolderPermission "Manager:\Calendar" -User delegate@domain.com -AccessRights Editor
Set-Mailbox -Identity "Manager" -GrantSendOnBehalfTo delegate@domain.com
```
### Remove Delegate
```powershell
Remove-MailboxFolderPermission "Manager:\Calendar" -User delegate@domain.com
Set-Mailbox -Identity "Manager" -GrantSendOnBehalfTo $null
```
---
## βοΈ Calendar Processing Settings
Control automatic meeting request processing:
### View Current PermissionsSettings
```powershell
Get-CalendarProcessing "UserName"
```
### Enable Auto-Accept and Decline Conflicts
```powershell
Set-CalendarProcessing "UserName" -AutomateProcessing AutoAccept -AddOrganizerToSubject $true -DeleteComments $false -DeleteSubject $false -AddAdditionalResponse $true
```
### Disable Auto-Processing (Manual)
```powershell
Set-CalendarProcessing "UserName" -AutomateProcessing None
```
### Resource Mailboxes (Rooms/Equipment)
```powershell
Set-CalendarProcessing "Room Name" -AutomateProcessing AutoAccept -AllowConflicts $false -BookingWindowInDays 180 -EnforceSchedulingHorizon $true
```
---
## π Quick Reference Summary
| Task | Command | Notes |
|------|----------|-------|
| View calendar permissions | `Get-MailboxFolderPermission "UserName: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:
```powershell
Get-Mailbox -RecipientTypeDetails UserMailbox | ForEach-Object {
Set-CalendarProcessing $_.Alias -AutomateProcessing AutoAccept
}
```
- Always verify changes with:
```powershell
Get-MailboxFolderPermission "User:\Calendar"
```
---
**Updated:** {{ date }}
**Author:** Tomas Toohey
**Reference Category:** Exchange Quick References