Grant Calendar Permissions via PowerShell

Quick examples for granting calendar folder permissions using Exchange Online / Microsoft 365 PowerShell — single mailbox and bulk CSV examples.

5 min read
Exchange Online
October 2025

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

Connect to Exchange Online

First, install and connect to Exchange Online PowerShell:

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:

PowerShell
Add-MailboxFolderPermission -Identity 'alice@contoso.com:\Calendar' -User 'bob@contoso.com' -AccessRights Reviewer

To grant Editor (read/write) permissions:

PowerShell
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:

CSV
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:

PowerShell
$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:

PowerShell
# 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:

Best Practices & Notes

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.

Back to Exchange Posts View All Posts