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)
}