Forum Discussion
Set historic calendar entries for a specific user to private
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.
- Andres-BohrenSteel Contributor
Hi OzOscroft
You should be able to use EWS Managed API and OAuth Authentication. Be aware that this is like an Application Impersonation
https://blog.icewolf.ch/archive/2021/02/06/exchange-managed-api-and-oauth-authentication/
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 https://github.com/BohrenAn/GitHub_PowerShellScripts/blob/main/ExchangeOnline/GraphAPI/ExOMgGraphApi.ps1
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
Regards
Andres Bohren