Home About Tools Projects Guides & Blog ⚡ Hire Me ✦ Websites Contact →
☁️ M365 Admin

How to Set Microsoft 365 Calendar Permissions via PowerShell

Managing calendar permissions through the Microsoft 365 admin centre works fine for one-off changes, but the moment you need to audit permissions across a whole department, fix permissions for a leaver, or bulk-update access for a new team structure, the UI becomes painfully slow. PowerShell lets you handle all of this in seconds.

This post covers every calendar permission operation, get, add, remove, change, and bulk lookup, using the Exchange Online MailboxFolderPermission cmdlets.

Prerequisites

All commands below require the Exchange Online PowerShell module and a connection to your tenant. If you haven't set this up yet:

PowerShell
# Install the Exchange Online module (run once)
Install-Module -Name ExchangeOnlineManagement -Force

# Connect to Exchange Online, sign in with your Global Admin account
Connect-ExchangeOnline -UserPrincipalName "admin@yourdomain.com"
ℹ️
Admin role required
You need Global Administrator or Exchange Administrator role to manage calendar permissions for other users. Users can manage their own calendar permissions without admin rights, but the commands below are scoped for admin use.

Quick Reference

Get-MailboxFolderPermission
View who has access to a calendar and what permissions they have.
Add-MailboxFolderPermission
Grant a user access to a calendar with a specified permission level.
Set-MailboxFolderPermission
Change an existing user's permission level on a calendar.
Remove-MailboxFolderPermission
Revoke a user's access to a calendar entirely.

Get Calendar Permissions

🔍 Get

Lists every user who has been granted access to the specified calendar and their current permission level.

PowerShell
# View all permissions on a user's calendar
# Replace the email with the mailbox owner's address
Get-MailboxFolderPermission -Identity "example@example.co.uk:\calendar"
Get-MailboxFolderPermission output showing calendar permissions

The output shows each User who has access and their AccessRights level. The Default and Anonymous entries are always present, Default covers internal users who haven't been explicitly granted access, Anonymous covers external unauthenticated users.

Calendar folder name varies by locale
On English tenants the folder is :\calendar. On non-English tenants it may be localised (e.g. :\Kalender on German tenants). If the command errors, run Get-MailboxFolderStatistics user@domain.com | where {$_.FolderType -eq "Calendar"} to find the exact folder name.

Add Calendar Permissions

➕ Add

Grants a user access to another user's calendar. The -Identity is the calendar owner, -User is the person being granted access.

PowerShell
# Grant a user access to a calendar
# -Identity  = the calendar owner
# -User      = the person receiving access
# -AccessRights = the permission level to grant (see reference table below)
Add-MailboxFolderPermission `
  -Identity     "test@jackdjd.co.uk:\calendar" `
  -User         "user@jackdjd.co.uk" `
  -AccessRights Editor

# Verify the permission was added
Get-MailboxFolderPermission -Identity "test@jackdjd.co.uk:\calendar"
Add-MailboxFolderPermission granting Editor access

This grants user@jackdjd.co.uk Editor access to test@jackdjd.co.uk's calendar, they can read, create, edit and delete items.

⚠️
User already has permissions?
If the user already has a permission entry on the calendar, Add-MailboxFolderPermission will throw an error. Use Set-MailboxFolderPermission to update an existing entry instead.

Remove Calendar Permissions

➖ Remove

Completely revokes a user's access to a calendar. This removes their entry entirely, they'll fall back to whatever the Default permission allows.

PowerShell
# Remove a user's access to a calendar
Remove-MailboxFolderPermission `
  -Identity "test@jackdjd.co.uk:\calendar" `
  -User     "user@jackdjd.co.uk"

# Verify the permission was removed
Get-MailboxFolderPermission -Identity "test@jackdjd.co.uk:\calendar"
Remove-MailboxFolderPermission removing calendar access

Change Calendar Permissions

✏️ Change

Updates an existing permission entry to a new access level. Use this when a user already has access and you need to increase or reduce it.

PowerShell
# Change an existing calendar permission to a new access level
Set-MailboxFolderPermission `
  -Identity     "test@jackdjd.co.uk:\calendar" `
  -User         "user@jackdjd.co.uk" `
  -AccessRights Reviewer

# Verify the change
Get-MailboxFolderPermission -Identity "test@jackdjd.co.uk:\calendar"
Set-MailboxFolderPermission changing access to Reviewer

See All Calendars a User Has Access To

🔎 Bulk Lookup

Useful for audits, offboarding, or troubleshooting. This script iterates every mailbox in the tenant and returns any calendar where the specified user has been explicitly granted access.

PowerShell
# Find every calendar that a specific user has access to
# Replace the email with the user you're auditing
Get-Mailbox | % {
    Get-MailboxFolderPermission `
        (($_.PrimarySmtpAddress.ToString()) + ":\Calendar") `
        -User "test@jackdjd.co.uk" `
        -ErrorAction SilentlyContinue
} | Select-Object Identity, User, AccessRights

# Example output:
# Identity                              User                   AccessRights
# --------                              ----                   ------------
# user@jackdjd.co.uk:\Calendar          test@jackdjd.co.uk     {Editor}
# manager@jackdjd.co.uk:\Calendar       test@jackdjd.co.uk     {Reviewer}
Bulk calendar lookup output showing all calendars a user has access to

The -ErrorAction SilentlyContinue flag suppresses errors for mailboxes where the user has no explicit permission entry, without it you'd get an error for every mailbox that doesn't have a match, drowning out the useful results.

Export results to CSV
Pipe the output to Export-Csv to save a full permissions audit for a user:
... | Select Identity, User, AccessRights | Export-Csv -Path "C:\CalendarAudit.csv" -NoTypeInformation

Calendar Access Rights Reference

📋 Reference

When using Add-MailboxFolderPermission or Set-MailboxFolderPermission, the -AccessRights parameter accepts one of the following values:

Access Right What the user can do
Owner FULL Read, create, modify and delete all items and folders. Can also manage item permissions, effectively full control.
PublishingEditor HIGH Read, create, modify and delete all items and subfolders. Same as Editor but can also create subfolders.
Editor HIGH Read, create, modify and delete all items. Cannot manage permissions or create subfolders.
PublishingAuthor MID Read all items and create subfolders. Can only modify and delete items they created themselves.
Author MID Read all items and create new items. Can edit and delete their own items only.
NonEditingAuthor MID Read all items and create new items. Can delete their own items but cannot edit anything.
Reviewer LOW Read-only access. Can view all calendar items but cannot create, edit or delete anything.
Contributor LOW Can create items and subfolders but cannot read any existing items
J
Jack Davies
IT Engineer · M365 & Intune Specialist

Jack is an IT Technical Engineer based in the UK, working day-to-day with Microsoft 365, Intune, and Entra ID across a range of businesses. He holds the MS-900 certification and is studying for a BSc in Cyber Security through the Open University. Outside of work he builds and documents home lab projects, writes guides on this site, and takes on M365 consulting work for small businesses.

About Jack → LinkedIn →
// monthly tips

Get M365 tips in your inbox

Practical Intune and Microsoft 365 tips, once a month. No spam, no fluff.