Overview
There are scenarios where admins or automation need to grant another user access to a mailbox calendar (read or editor). This post shows safe PowerShell examples for Exchange Online and a bulk flow using a CSV file.
Prerequisites
- An account with the required Exchange admin privileges
- Exchange Online PowerShell module (ExchangeOnlineManagement) or the correct Graph permissions for delegated calendar access
- PowerShell 5.1 or PowerShell 7+ with appropriate execution policy
Connect to Exchange Online
First, install and connect to Exchange Online PowerShell:
# Install if needed
Install-Module ExchangeOnlineManagement -Scope CurrentUser
# Connect interactively
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline -UserPrincipalName admin@contoso.com
Grant permission to a single mailbox
Grant the user Reviewer (read-only) access on the default calendar folder:
Add-MailboxFolderPermission -Identity 'alice@contoso.com:\Calendar' -User 'bob@contoso.com' -AccessRights Reviewer
To grant Editor (read/write) permissions:
Add-MailboxFolderPermission -Identity 'alice@contoso.com:\Calendar' -User 'bob@contoso.com' -AccessRights Editor
Bulk update from CSV
For bulk operations, create a CSV file with the following format:
Mailbox,Principal,AccessRight
alice@contoso.com,bob@contoso.com,Reviewer
jane@contoso.com,helpdesk@contoso.com,Editor
manager@contoso.com,assistant@contoso.com,Editor
Then use this PowerShell script to process the CSV file:
$csv = Import-Csv -Path .\calendar-permissions.csv
foreach ($row in $csv) {
try {
Write-Host "Granting $($row.AccessRight) on $($row.Mailbox) to $($row.Principal)" -ForegroundColor Green
Add-MailboxFolderPermission -Identity "$($row.Mailbox):\Calendar" -User $row.Principal -AccessRights $row.AccessRight -ErrorAction Stop
Write-Host "✓ Success" -ForegroundColor Green
} catch {
Write-Warning "❌ Failed for $($row.Mailbox) -> $($_.Exception.Message)"
}
}
Verify and remove permissions
To check existing permissions and remove them when needed:
# List current permissions
Get-MailboxFolderPermission -Identity 'alice@contoso.com:\Calendar'
# Remove a specific permission
Remove-MailboxFolderPermission -Identity 'alice@contoso.com:\Calendar' -User 'bob@contoso.com' -Confirm:$false
Common Access Rights
Here are the most commonly used access rights for calendar permissions:
- Reviewer: Read-only access to calendar items
- Editor: Read, create, modify, and delete calendar items
- Author: Read, create, and modify own calendar items
- Owner: Full access including permission management
- FreeBusyTimeOnly: Can only see free/busy time
- FreeBusyTimeAndSubjectAndLocation: Can see free/busy, subject, and location
Best Practices & Notes
- Always test permissions on a small set of mailboxes before bulk operations
- Use
-WhatIfparameter when available to preview changes - For modern Graph-based automation, consider using Microsoft Graph APIs
- Document permission changes for compliance and auditing purposes
- Regular permission audits help maintain security hygiene
- Consider using security groups instead of individual users for easier management
Important Security Note
Always follow the principle of least privilege when granting calendar permissions. Regularly audit and review permissions to ensure they remain appropriate and necessary.