The purpose of this PowerShell script is to adjust an existing Shared Mailbox to auto-accept calendar invitations and either keep emails or automatically remove them.
Why would you do that as an admin? Well, there are 2 scenarios for it, and the choice really depends on the department / team in your company and their needs:
1) Its only purpose is a Calendar (e.g. team calendar for vacations)
2) Its purpose is a combination of a Calendar and a Mailbox (e.g. Help Desk mailbox and team calendar for vacations combined rather than two entities separately).
Regardless, the way it works for users – they invite that calendar as a participant when creating vacation bookings. Thus, those bookings will be visible in both a personal calendar and a team calendar.
What this script does:
- Turns on auto-processing;
- Allows conflict creation;
- Either deletes emails or keeps them depending on a scenario from above.
$email = Read-Host "Please provide the email address of a Shared Mailbox" Set-CalendarProcessing -Identity $email -AllowConflicts $true Set-Mailbox -Identity $email -Type Room Set-CalendarProcessing -Identity $email -AutomateProcessing AutoAccept Set-Mailbox -Identity $email -Type Shared $answer = Read-Host "Would you like to keep or delete non-calendar items (e.g. emails) ( keep / delete )?" While ("keep","delete" -notcontains $answer) { $answer = Read-Host "Would you like to keep or delete non-calendar items (e.g. emails) ( keep / delete )?" } If ($answer -eq 'keep') { Set-CalendarProcessing -Identity $email -DeleteNonCalendarItems $false Remove-Variable * -ErrorAction SilentlyContinue } ElseIf ($answer -eq 'delete') { Set-CalendarProcessing -Identity $email -DeleteNonCalendarItems $true Remove-Variable * -ErrorAction SilentlyContinue }
Why does this script convert the calendar to a Room calendar then change it back to a shared one? Thanks.
Hi Ian,
That is because -AutomateProcessing AutoAccept cannot be set to a Shared Mailbox (you can give it a try). However, it will kept just fine if a conversion happens 1st.
Thanks for stopping by.
Hi.. I did try the script and it works. Thanks.
However, the resulting calendar entry shows as the name of the organizer. Is it possible to show the meeting subject instead?
If it’s not possible, can you help me revert to previous state (undo the autoaccept)? Sorry I’m not really familiar with powershell scripting.
Thank you.
Hi Lester, -AddOrganizerToSubject $false -DeleteSubject $false
You can try something like this:
Set-CalendarProcessing -Identity
More info about this cmdlet – https://docs.microsoft.com/en-us/powershell/module/exchange/set-calendarprocessing?view=exchange-ps
Thank you very much.
The script works very good 🙂
when you add “AddOrganizerToSubject $false -DeleteSubject $false” in line 7 behind autoaccept then the subjects are okay, like Pavel described.
Thank you very much
Thanks Patrick!
I’m sorry I’m still learning here. But where exactly does one enter the script above?
Hi Lina,
It’s ok – you should open PowerShell app, then connect to Exchange by using this command Connect-ExchangeOnline, then run my script.
Amazing! I never even knew about the Set-CalendarProcessing cmdlet until now. TY!! However, in testing it just now, the moment I turn the mailbox back into Shared mode from Room, the auto-processing stops. If I turn it back into a Room, it immediately works again. Do you think they’ve changed something in the past year? Other than “Staff Calendar” appearing as a Room, is there any major reason why we wouldn’t want the Staff Calendar to be a “room”? Alternatively, would making this a Standard mailbox (Exchange Online – Plan 1/2) do the trick?