Skip to main content

Calendar Permissions

#

Exchange Online – Calendar Permissions & Processing


This page provides a consolidated reference for managing **calendar access, delegation, and processing**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.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**users:


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


---

##

βž• Add Calendar Permissions


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


##

βž– Remove Calendar Permissions


```powershell
Remove-MailboxFolderPermission "UserName:\Calendar" -User someone@domain.someone@domain.com
```

Remove **all permissions**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.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.delegate@domain.com -AccessRights Editor
Set-Mailbox -Identity "Manager" -GrantSendOnBehalfTo delegate@domain.delegate@domain.com
```

###

Remove Delegate


```powershell
Remove-MailboxFolderPermission "Manager:\Calendar" -User delegate@domain.delegate@domain.com
Set-Mailbox -Identity "Manager" -GrantSendOnBehalfTo $null
```


---

##

βš™οΈ Calendar Processing Settings


Control automatic meeting request processing:


###

View Current Settings


```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


|
|Command|Notes|
|------|----------|-------|
|
| `| |
|
| `| |
|
| `| |
|
| `| |
|
| `| |
|
| `| |
---
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`Reviewer Grant read-only view
Remove Access Remove-MailboxFolderPermission "User:\Calendar" -User someone@domain.com`com Removes user access
Default Availability Set-MailboxFolderPermission "User:\Calendar" -User Default -AccessRights AvailabilityOnly`AvailabilityOnly Default org-wide setting
Auto Accept Meetings Set-CalendarProcessing "User" -AutomateProcessing AutoAccept`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