Windows OS Hub
  • Windows Server
    • Windows Server 2022
    • Windows Server 2019
    • Windows Server 2016
    • Windows Server 2012 R2
    • Windows Server 2008 R2
    • SCCM
  • Active Directory
    • Active Directory Domain Services (AD DS)
    • Group Policies
  • Windows Clients
    • Windows 11
    • Windows 10
    • Windows 8
    • Windows 7
    • Windows XP
    • MS Office
    • Outlook
  • Virtualization
    • VMWare
    • Hyper-V
    • KVM
  • PowerShell
  • Exchange
  • Cloud
    • Azure
    • Microsoft 365
    • Office 365
  • Linux
    • CentOS
    • RHEL
    • Ubuntu
  • Home
  • About

Windows OS Hub

  • Windows Server
    • Windows Server 2022
    • Windows Server 2019
    • Windows Server 2016
    • Windows Server 2012 R2
    • Windows Server 2008 R2
    • SCCM
  • Active Directory
    • Active Directory Domain Services (AD DS)
    • Group Policies
  • Windows Clients
    • Windows 11
    • Windows 10
    • Windows 8
    • Windows 7
    • Windows XP
    • MS Office
    • Outlook
  • Virtualization
    • VMWare
    • Hyper-V
    • KVM
  • PowerShell
  • Exchange
  • Cloud
    • Azure
    • Microsoft 365
    • Office 365
  • Linux
    • CentOS
    • RHEL
    • Ubuntu

 Windows OS Hub / Exchange / Managing Calendar Permissions on Exchange Server and Microsoft 365

February 20, 2023 ExchangeMicrosoft 365OutlookPowerShell

Managing Calendar Permissions on Exchange Server and Microsoft 365

In this article, we’ll look at how to manage calendar permissions in on-premises Exchange Server and Microsoft 365 mailboxes using Outlook and PowerShell. We will also focus on the topic of viewing availability (free/busy info) in calendars of rooms or shared mailboxes.

Quite often, an Exchange administrator needs to grant someone access to another employee’s calendar. For example, a secretary wants to create, remove, and edit any items in the director’s calendar and meeting room mailbox; or a department head wants to see and edit employee availability in their calendars.

Contents:
  • How to Share a Calendar in Outlook and Outlook Web App?
  • Assigning Calendar Permissions in Exchange/Microsoft 365 Mailbox Using PowerShell
  • How to Show Full Free/Busy Info in Exchange/Microsoft 365 Calendar?

How to Share a Calendar in Outlook and Outlook Web App?

A user can grant access to their calendar directly from Outlook. The Exchange Calendar is essentially a common folder in a user’s inbox. You can configure calendar access on the desktop version of Outlook or through Outlook Web Access (Outlook on the web).

Select a calendar and click Sharing and permissions in its properties.

sharing user calendar in Outlook on the web

In the next window, the current list of users and groups having access to your calendar appears. In our example, any user of your organization (tenant) may view the Free/Busy information in the calendar ( Can view when I'm busy ). User Henrietta has permissions to create and edit any items in the calendar.

view current calendar permissions

A user can send an invitation to share their calendar with another user. Just enter a user email and select the access permission. In this example, I’m granting Alex permission to view events on my calendar (Can view all details).

Setting calendar permissions in outlook web access and

In desktop Outlook versions, calendar permissions are assigned in a similar way. Open your Outlook, select your Calendar, and click Calendar Permissions. In the next window, you will see who can access your calendar. Using the Add/Remove buttons, you can grant and revoke access permissions.

Share calendar/ change calendar permissions in Microsoft Outlook

Assigning Calendar Permissions in Exchange/Microsoft 365 Mailbox Using PowerShell

An organization/tenant administrator can grant access to any user calendar or a shared mailbox using PowerShell or Microsoft Graph API (for Microsoft 365/Azure). Only with PowerShell can you quickly grant access to all user calendars in the organization.

The basic principles used to manage mailbox folder permissions in Exchange/Office 365 are fully applicable to managing calendar permissions.

Open the PowerShell console and connect to your on-premises Exchange Server or Microsoft 365 (Exchange Online) tenant:

  • Using PowerShell you can remotely connect to an on-premises Exchange Server from any computer, even without the EMS (Exchange Management Shell) module installed:
    $ExchAdmCred = Get-Credential
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://mun-mx1.woshub.com/PowerShell/ -Authentication Kerberos -Credential $ExchAdmCred
    Import-PSSession $Session
  • To connect to an Exchange Online (Microsoft 365) tenant with the multi-factor authentication (MFA) enabled, use the Exchange Online PowerShell module. It also supports connection using Modern Authentication:
    Connect-ExchangeOnline -UserPrincipalName [email protected]

You can list current user calendar permissions using the command below:

Get-MailboxFolderPermission -Identity maxbak:\Calendar

Get-MailboxFolderPermission list current calendar permissions with powershell

Calendar folder names may vary depending on the regional settings of your mailbox. For example, for the German mailbox, you should replace the command argument to maxbak:\Kalender.

The User column shows users, and the AccessRights column displays access privileges. Exchange has several predefined roles that you can use to set folder and calendar permissions (roles with the lowest privileges come first):

  • None
  • AvailabilityOnly
  • Contributor
  • Reviewer
  • NonEditingAuthor
  • Author
  • PublishingAuthor
  • Editor
  • PublishingEditor
  • Owner

To grant another user access to a mailbox folder, use the Add-MailboxFolderPermission cmdlet. For example, to allow user A.Weber to edit the calendar items of S.Fischer, run the command:

Add-MailboxFolderPermission -Identity S.Fischer:\Calendar -User A.Weber -AccessRights Editor

If you want to grant view-only permissions:

Add-MailboxFolderPermission -Identity S.Fischer:\Calendar -User A.Weber -AccessRights Reviewer

To remove calendar permissions:

Remove-MailboxFolderPermission -Identity S.Fischer:\Calendar –user A.Weber

You can export current calendar permissions for all mailboxes in your Azure tenant (Exchange organization) to a CSV file:

$Mailboxes = Get-Mailbox -ResultSize Unlimited | Select-Object UserPrincipalName
foreach ($mailbox in $Mailboxes) {
Get-MailboxFolderPermission -Identity "$($mailbox.UserPrincipalName):\Calendar" |
Select-Object @{Name="UrerPrincipalName";E={$mailbox.UserPrincipalName}},FolderName,User,AccessRights |
Export-Csv C:\PS\Calendar_report.csv -NoTypeInformation -Append
}

Later you can analyze the CSV file with mailbox UPNs and calendar permissions in Excel.

Export Excchange/Mffice 365 calendar permissions to CSV using PowerShell

The following PowerShell script will allow a specific user to view all calendars in your organization:

Foreach ($Mailbox in (Get-Mailbox -ResultSize Unlimited)) { Add-MailboxFolderPermission -identity "$($Mailbox.Name):\Calendar" -AccessRights Owner -User A.Weber}

How to Show Full Free/Busy Info in Exchange/Microsoft 365 Calendar?

Users in the same organization can view the availability information of other users or resource mailboxes. By default, only Free/Busy information is available.

view AvailabilityOnly info in outlook calendar

Subjects, descriptions, and locations are not visible on other users’ calendars. The Default= AvailabilityOnly permission causes this behavior. The AvailabilityOnly permission type allows viewing the availability information (Free/Busy) only.

Default permissions to view Free/Busy info in calendar

You may want users to view both the availability and subjects or locations in a calendar (for example, a shared resource calendar). The following command allows all users to view events in the calendars of all room mailboxes:

Foreach ($Mailbox in (Get-Mailbox -ResultSize Unlimited) | Where {$_.ResourceType -eq "Room") { Add-MailboxFolderPermission -identity "$($Mailbox.Name):\Calendar" -AccessRights AvailabilityOnly -User Default }

By default, the owner’s name is shown instead of the meeting title. This behavior is set by the AddOrganizerToSubject = $true attribute. To allow viewing subjects and their contents in a room calendar, use the command below:

Set-CalendarProcessing room123 -DeleteComments $false -DeleteSubject $false -AddOrganizerToSubject $false

In Exchange Online, you can configure whether users are allowed to publish their calendars for external users (organizations). Open the Exchange Admin Center and navigate to Organization -> Sharing.

By default, the Default Sharing Policy is used that allows to share only Free/Busy information with external users. Here you can set a list of email domains you can share calendars with and/or edit a set of calendar information to be shared (subjects, location, organizer).

Exchange admin center - allow to share calendar outside the organization

2 comments
1
Facebook Twitter Google + Pinterest
previous post
PowerShell Profile Files: Getting Started
next post
How to Enable Wireless (Wi-Fi) on Windows Server 2019/2016

Related Reading

How to Connect VPN Before Windows Logon

November 14, 2023

Send Emails with Microsoft Graph API and PowerShell

November 6, 2023

Zabbix: How to Get Data from PowerShell Scripts

October 27, 2023

Tracking Printer Usage with Windows Event Viewer Logs

October 19, 2023

PowerShell: Configure Certificate-Based Authentication for Exchange Online (Azure)

October 15, 2023

2 comments

serg October 2, 2023 - 8:05 am

You can grant calendar permissions only to m365 unified group or mail-enable security groups.

Reply
serg October 2, 2023 - 8:21 am

Send invitation: -SendNotificationToUser $true
Make a user delegate: -SharingPermissionFlags Delegate,CanViewPrivateItems

Reply

Leave a Comment Cancel Reply

Categories

  • Active Directory
  • Group Policies
  • Exchange Server
  • Microsoft 365
  • Azure
  • Windows 11
  • Windows 10
  • Windows Server 2022
  • Windows Server 2019
  • Windows Server 2016
  • PowerShell
  • VMWare
  • Hyper-V
  • Linux
  • MS Office

Recent Posts

  • How to Connect VPN Before Windows Logon

    November 14, 2023
  • Removing Azure Arc Setup Feature on Windows Server 2022

    November 9, 2023
  • Using WPAD (Web Proxy Auto-Discovery Protocol) on Windows

    November 7, 2023
  • Send Emails with Microsoft Graph API and PowerShell

    November 6, 2023
  • Zabbix: How to Get Data from PowerShell Scripts

    October 27, 2023
  • Tracking Printer Usage with Windows Event Viewer Logs

    October 19, 2023
  • PowerShell: Configure Certificate-Based Authentication for Exchange Online (Azure)

    October 15, 2023
  • Reset Root Password in VMware ESXi

    October 12, 2023
  • How to Query and Change Teams User Presence Status with PowerShell

    October 8, 2023
  • How to Increase Size of Disk Partition in Ubuntu

    October 5, 2023

Follow us

  • Facebook
  • Twitter
  • Telegram
Popular Posts
  • Outlook Keeps Asking for Password on Windows
  • How to Manually Configure Exchange or Microsoft 365 Account in Outlook 365/2019/2016
  • Whitelist Domains and Email Addresses on Exchange Server and Microsoft 365
  • Moving Exchange Mailboxes to Different Database
  • FAQ: Licensing Microsoft Exchange Server 2019/2016
  • How to Cleanup, Truncate or Move Log Files in Exchange Server 2013/2016/2019?
  • Search and Delete Emails from User Mailboxes on Exchange Server (Microsoft 365) with PowerShell
Footer Logo

@2014 - 2023 - Windows OS Hub. All about operating systems for sysadmins


Back To Top