Scenario: When exporting a Calendar to a PST via New-MailboxExportRequest, there no good content filters to export via Start Date and End Date for exporting calendar entries to a date range. The Created/Modified/Received dates which are saved into Indexing may not produce the correct result if those items are queried. Instead follow these steps:
1. Export the entire calendar and import it into another mailbox.
2. On the new mailbox, give your account that you are running Exchange Powershell from FULL permissions to the mailbox you created (or the mailbox with the calendar you want to edit).
3. Run the following script. Change that which is in blue:
*Note: You can only do up to 2 year increments. You can also comment out (#) the delete lines to double check your work.
Import-Module -Name "C:Program FilesMicrosoftExchange ServerV15BinMicrosoft.Exchange.WebServices.dll" $mailboxname = "TEST222@domain.com" $service = new-object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.Exchangeversion]::exchange2013) $service.Url = new-object System.Uri("https://Ex2013Svr1.domain.com/EWS/Exchange.asmx") $folderid= new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Calendar,$MailboxName) $Calendar = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$folderid) #Define Date to Query #running 2 Year Increment $StartDate = "1/1/2006" $EndDate = "12/31/2007" $CalendarView = New-Object Microsoft.Exchange.WebServices.Data.CalendarView($StartDate,$EndDate,100000) $fiItems = $service.FindAppointments($Calendar.Id,$CalendarView) foreach($Item in $fiItems.Items){ "Start : " + $Item.Start #"ENd : " + $Item.END "Subject : " + $Item.Subject $Item.Delete([Microsoft.Exchange.WebServices.Data.DeleteMode]::HardDelete) } #running 1 Year Increment $StartDate = "1/1/2008" $EndDate = "12/31/2008" $CalendarView = New-Object Microsoft.Exchange.WebServices.Data.CalendarView($StartDate,$EndDate,100000) $fiItems = $service.FindAppointments($Calendar.Id,$CalendarView) foreach($Item in $fiItems.Items){ "Start : " + $Item.Start #"ENd : " + $Item.END "Subject : " + $Item.Subject $Item.Delete([Microsoft.Exchange.WebServices.Data.DeleteMode]::HardDelete)