Exchange PowerShell - Publish Room / Equipment Calendars

Exchange PowerShell - Publish Room / Equipment Calendars


2 min read

So you've got some resource (rooms/equipment) calendars in Exchange that you need to make the calendars public for. You can use PowerShell to accomplish this quite easily.

First of all you can get the current calendar publishing information by using the Get-MailboxCalendarFolder cmdlet:

Get-MailboxCalendarFolder -Identity VIRT-V01:\\Calendar

Note that if the mailbox's language is not English (GB/US/etc) then you will need to change the :\Calendar suffix to the relevant one.

All the relevant calendar publishing information is then displayed:

RunspaceId                      : 2a27a1b5-42d1-4700-bd25-713b4892d960
Identity                        : VIRT - V.01 (10):\\Calendar
PublishEnabled                  : False
PublishDateRangeFrom            : SixMonths
PublishDateRangeTo              : SixMonths
DetailLevel                     : FullDetails
SearchableUrlEnabled            : False
PublishedCalendarUrl            :
PublishedICalUrl                :
ExtendedFolderFlags             : SharedOut, SharedViaExchange, ExchangeShareFolder, ExchangePublishedCalendar
ExtendedFolderFlags2            :
CalendarSharingFolderFlags      : None
CalendarSharingOwnerSmtpAddress :
CalendarSharingPermissionLevel  : Null
SharingLevelOfDetails           : None
SharingPermissionFlags          : None
SharingOwnerRemoteFolderId      : AAA=
LastAttemptedSyncTime           : 01/02/0001 00:00:00
LastSuccessfulSyncTime          : 01/02/0001 00:00:00
CreationTime                    : 02/11/2019 08:07:31
DelegateInformation             : Delegate Information was not calculated.
DefaultOnlineMeetingProvider    : TeamsForBusiness
AllowedOnlineMeetingProviders   : {TeamsForBusiness}
IsValid                         : True
ObjectState                     : Changed

You can see that publishing is disabled (PublishEnabled = false) and that the calendar url (PublishedCalendarUrl) and iCal (PublishedICalUrl) feed are empty.

To enable publishing you need to use the Set-MailboxCalendarFolder cmdlet.

Set-MailboxCalendarFolder -Identity VIRT-V01:\\Calendar -PublishEnabled $true -DetailLevel Full -PublishDateRangeFrom SixMonths -PublishDateRangeTo SixMonths

This will publish the calendar and make the past and future six months of events visible with full information available. You can execute the Get-MailboxCalendarFolder cmdlet again to retrieve the urls.

PublishedCalendarUrl : PublishedICalUrl :

If you decide to disable publishing, you can just execute the following:

Set-MailboxCalendarFolder -Identity VIRT-V01:\\Calendar -PublishEnabled $false -ResetUrl

The ResetUrl switch will clear the url properties. This is entirely optional. If you decide to enable publishing again then new urls may be generated if ResetUrl was specified.