Set historic calendar entries for a specific user to private

Iron Contributor

Hi all.  To improve engagement and to make organising meetings easier, I'd like to automatically set everyone's calendar so that everyone else in the organisation can see the title & location of appointments / meetings.  For this I'm going to use the following Exchange Online PowerShell script:


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


However, before I do this, I'd like to offer individuals who have a lot of sensitive meetings (e.g. HR, Finance, Exec's) the option to set all their historic calendar entries to Private (so only invitees would be able to see any details).


Is it possible to do this with PowerShell please?  It's easy to set their whole calendar to Private, but I'd just like to set historic calendar entries with this tag.  Hope you can help, and thank you.

1 Reply

Hi @OzOscroft 

You should be able to use EWS Managed API and OAuth Authentication. Be aware that this is like an Application Impersonation


or with Calendars.Read Calendars.ReadWrite Permissions you should also be able to Microsoft.Graph PowerShell Modules with Get-MgUserEvent / Update-MgUserEvent cmdlets.

Some samples are here 


But be aware:

  • If you update Meetings --> This could result in an Update Mail to all Recipients
  • Handling of Series is always a bit tricky


Andres Bohren