add calendar permissions office 365 powershell

Add Calendar Permissions in Office 365 via PowerShell


This is a tutorial on how to add calendar permissions in Office 365 for your users via PowerShell. You can add the permissions on a specific user’s mailbox, or you can add it onto a AD security group.

By default, Exchange (and Office 365) users can’t view messages or calendar items of other users. The only permission that is provided to all users by default is the ability to view free/busy information in the calendar of other users (AvailabilityOnly role).

Users can independently grant the necessary permissions to mailbox folders and items to other users from the Outlook/OWA interface. Unfortunately, in Exchange 2016/2013 and Exchange Online (Office 365), the administrator cannot centrally manage calendar permissions from the GUI (Exchange MMC, EAC—Exchange Administration Center or Office 365 admin portal). In Exchange 2010 a built-in Add-MailboxFolderPermission cmdlet has appeared that allows you to manage user permissions on any users’ mailbox folder. This cmdlet is also supported in Office 365.

Office 365 Calendar Permissions

Step 1. Run PowerShell

The first is step is to launch Windows PowerShell. We recommend running it as Administrator.

office 365 calendar permissions powershell

Step 2. Getting Office 365 Credentials

Run the following command to login to 365 via PowerShell with your Office 365 tenant admin credentials:

$LiveCred = Get-Credential

powershell calendar permissions

Step 3. Connect Your Office 365 Tenant

Now you need to create a new session:

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic –AllowRedirection

Step 4. Import Office 365 Session to PowerShell

Now you need to import the Office 365 session:

Import-PSSession $Session

set calendar permissions office 365 powershell

Step 5. Viewing Current Calendar Permissions with PowerShell

You can view current calendar permissions of the specified mailbox by using following:

Get-MailboxFolderPermission username:\calendar

Note. If this command returns that ‘username:\calendar’cannot be found, it most likely means that the user has Outlook language settings other than English. Appropriately, the Calendar folder can be called differently. For example, for the Dutch Language (nl-NL), to view calendar permissions, use the command:

Get-MailboxFolderPermission username:\Agenda

You can get the name of the calendar in the current user’s language configuration with the command:

(Get-MailboxFolderStatistics username -FolderScope Calendar).Identity -replace "\", ":\"

calendar permissions office 365 powershell

As you can see by default on a calendar folder assigned only AvailabilityOnly role.

calendar permissions powershell

You can get the list of all user’s calendars default permissions using the following command:

Get-Mailbox | ForEach-Object {Get-MailboxFolderPermission $_”:\calendar”} | Where {$_.User -like “Default”} | Select Identity, User, AccessRights

Tip. In on premise Exchange, you can view user calendar settings in a specific mailbox database with the command:

Get-Mailbox –database mbxdbname | ForEach-Object {Set-MailboxFolderPermission $_”:\calendar” -User Default -AccessRights Reviewer}

Step 6. Office 365 Mailbox Access Roles

You can use these available access roles:

  • Owner — read, create, modify and delete all items and folders. Also this role allows manage items permissions;
  • PublishingEditor — read, create, modify and delete items/subfolders;
  • Editor — read, create, modify and delete items;
  • PublishingAuthor — read, create all items/subfolders. You can modify and delete only items you create;
  • Author — create and read items; edit and delete own items NonEditingAuthor – full read access and create items. You can delete only your own items;
  • Reviewer — read only;
  • Contributor — create items and folders;
  • AvailabilityOnly — read free/busy information from calendar;
  • LimitedDetails;
  • None — no permissions to access folder and files.

Step 7. Assigning Office 365 Calendar Permissions with PowerShell

Now run the following command. In the example below, user2 would be able to open user1 calendar and edit it:

Add-MailboxFolderPermission -Identity user1@domain.com:\calendar -user user2@domain.com -AccessRights Editor

If you need to change the Default permissions for the calendar folder (in order to allow all users view calendar of the specified user), run the command:

Set-MailboxFolderPermission -Identity user1@domain.com:\calendar -User Default -AccessRights Reviewer

Check permissions again using the Get-MailboxFolderPermissions cmdlet, they should change:

Get-MailboxFolderPermission -Identity user1@domain.com:\calendar

FolderName User AccessRights

———- —- ————

Calendar Default {Reviewer}

Calendar Anonymous {None}

Calendar user2 {Editor}

You can also grant permissions to the mailbox not to an individual user, but to the Exchange distribution group.

New-DistributionGroup -Type Security -Name “Resource Calendar Owners” -Alias “grResourceCalendarAccess”
add-MailboxFolderPermission -Identity user1@domain.com:\calendar -User grResourceCalendarAccess -AccessRights Owner

In some cases, you need to grant Reviewer permissions on a calendar folder in all mailboxes to all users in your Exchange organization. You can make this bulk permission change using simple PowerShell script. To change Default calendar permission for all mailbox in mailbox database to Reviewer:

Get-Mailbox | ForEach-Object {Set-MailboxFolderPermission $_”:\calendar” -User Default -AccessRights Reviewer}

Also you can prepare a CSV file with a list of users and assign them permissions to access a specific user’s calendar:

Import-Csv users.csv | foreach { add-MailboxFolderPermission -Identity "user1@domain.com:\calendar" -User $_.alias -AccessRights Owner }

To remove permission use Remove-MailboxFolderPermission cmdlet:

Remove-MailboxFolderPermission -Identity user1@domain.com:\calendar –user user2@domain.com

Now you can disconnect your PowerShell session from Office 365:

Remove-PSSession $Session

Alternative Script

Also see this 365 script for setting calendar permissions: Set Calendar Permission in Office 365 Exchange Online.

You may also like:

Office 365 – “This message could not b... Error Message: This message could not be sent. Try sending the message again later, or contact your network administrator. Error is . You might be rec...
How to copy files with BITS using PowerShell? If you use local (and global) networks, you might know that files between systems are transferring by using SMB, FTP or HTTP protocols. The problem wi...
Removing Old and Unused Drivers from Driver Store ... Each time you install or update your device driver, Windows OS (since Vista) continues to store the old version of the driver in the system Driver Sto...
How to transfer FSMO Roles From a Failed Domain Co... In case domain controller, which owns FSMO (Flexible Single Master Operation) roles, is fail (virus attack, fatal software problems or catastrophic ha...
LZX — new Windows 10 NTFS compression algorithm Many of you may know that NTFS file system used by Windows 10 already has a built-in NTFS compression feature. But in Windows 10 Microsoft has added c...
Comments
  1. Posted by Jason Johnson
  2. Posted by cherdt
  3. Posted by David North
  4. Posted by Bobby Turkilino
  5. Posted by Daniel
    • Posted by TheITBros
      • Posted by Daniel
  6. Posted by The Peregrine
  7. Posted by Frank
  8. Posted by Justin
  9. Posted by Craig
    • Posted by daniel
    • Posted by trash81
  10. Posted by Steve
  11. Posted by Randy
    • Posted by JakFrost
  12. Posted by Marshel
    • Posted by Markus

Add Your Comment