Scenario: You want to move email items based on date range into a folder.
Script: The script performs the following:
- Attaches to the mailbox specified in the script
- Looks in the inbox for email items with a received that lies between a date range.
- Creates a folder
- Moves those items into that folder.
#Make sure the account you run this as has full access permissions to the mailbox #Load the EWS Assembly Import-Module -Name "C:Program FilesMicrosoftExchange ServerV15BinMicrosoft.Exchange.WebServices.dll" $service = new-object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.Exchangeversion]::exchange2013) $service.Url = new-object System.Uri("https://Ex2013Srv1/EWS/Exchange.asmx") #Define your Variables #$StartDate = [system.DateTime]::Today.AddDays(-1) #$EndDate = [system.DateTime]::Today #OR [datetime]$StartDate = "11/17/2015" [datetime]$EndDate = "11/18/2015" $mailboxname = "steve@domain.com" #Bind your Folder & Create your filter $folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox,$MailboxName) $InboxFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$folderid) $Sfgt = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsGreaterThan([Microsoft.Exchange.WebServices.Data.ItemSchema]::DateTimeReceived, $StartDate) $Sflt = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsLessThan([Microsoft.Exchange.WebServices.Data.ItemSchema]::DateTimeReceived, $EndDate) #Create Collection and Apply your Filter $sfCollection = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+SearchFilterCollection([Microsoft.Exchange.WebServices.Data.LogicalOperator]::And); $sfCollection.add($Sfgt) $sfCollection.add($Sflt) $view = new-object Microsoft.Exchange.WebServices.Data.ItemView(2000) $frFolderResult = $InboxFolder.FindItems($sfCollection,$view) #Creates a Folder $NewFolder = new-object Microsoft.Exchange.WebServices.Data.Folder($service) $NewFolder.DisplayName = $EndDate.ToString("yyyy-MM-dd") $NewFolder.Save($InboxFolder.Id.UniqueId) #Moves your Email Items foreach ($miMailItems in $frFolderResult.Items){ "Moving:" + $miMailItems.Subject.ToString() [VOID]$miMailItems.Move($NewFolder.Id) }