Outlook / Exchange Permissions

In this lesson you'll learn how to...

Connecting to Powershell...

On your PC, open the Windows Powershell Console with administrative privileges. (Right-click then select 'Run as admin')
.
First we'll check if the  Exchange Online PowerShell V2 (EXO V2) is installed on your computer by running the following command in the prompt:
Copied to clipboard!

Get-InstalledModule ExchangeOnlineManagement
 
If the module is missing, you can install it from the Powershell Online Gallery using the following command:
Copied to clipboard!

Install-Module -Name ExchangeOnlineManagement -RequiredVersion 3.5.0
 
Run the following to get a list of the current script execution policies, so you can refer back to it as needed...
Copied to clipboard!

  
  
Get-ExecutionPolicy -List
 
Next use the code below to set the Execution Policy with the Process scope so it only affects the current PowerShell session. The execution policy is saved in the environment variable $env:PSExecutionPolicyPreference and is deleted when the session is closed. Answer “Y” to allow the change...
Copied to clipboard!

  
  
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
 
NOTE: You'll need the most recent Powershell update that supports MFA / REST.
Connect to Exchange Online using a global administrator account (Don't forget to replace 'you@you-firm' with your global admin account)
Click here for more info
Copied to clipboard!

  
  
Connect-ExchangeOnline -UserPrincipalName linked-email@your-firm.com -ShowProgress $true
 

By default, Microsoft Modern Authentication is used to sign in. Specify your Microsoft 365 tenant admin credentials. If you have MFA (Multi-Factor Authentication) enabled for your Azure account, you must confirm your account login with your second factor.

Getting calendar permissions...

NOTE: Don't forget to replace 'you@yourfirm.com' with the user's email address.
You can view current calendar (folder-level) permissions of the specified mailbox by using the Get-MailboxFolderPermission cmdlet (this cmdlet is available in the cloud-based service and in on-premises Exchange):
Copied to clipboard!

  
  
Get-MailboxFolderPermission linked-email@your-firm.com:\calendar

Using PowerShell, you can find all the calendars in your organization/tenant that a particular user has been granted access to. In this example we want to display a list of user mailboxes, calendars to which the user named Mueller has access:
Copied to clipboard!

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

Now run the following code for each user you would like to add one-by-one. Remember to modify the code below to match your user's details...
Copied to clipboard!

  
  
Add-MailboxFolderPermission -Identity linked-email@your-firm.com:\Calendar -User user@your-firm.com.com -AccessRights Editor -SharingPermissionFlags None -SendNotificationToUser $false
 

NOTE: You can use SET instead of ADD if the person is already on the list of permissions
Finally let's recheck permissions and confirm you have the proper settings...
Copied to clipboard!

  
  
Get-MailboxFolderPermission -Identity linked-email@domain.com:\Calendar -User user@domain.com 

Disconnect from Exchange Online
Copied to clipboard!

  
  
Disconnect-ExchangeOnline

Now you can go to your Outlook Calendar view and add any newly shared calendars!
Still stuck?
Click here to book a call.
Back to top ↑