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:

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