Remove all Emails from a specific folder using Powershell script

Remove All Emails from a specific folder from user Mailbox, This script uses EWS so make sure you install Exchange web service 2.0 before using this script.

Copy the code and put that in a ps1 file, make sure to change the required attribute in script header.

POWERSHELL
########################################
#script Name = Delete_ALL_MSG_EWS-specific-folder.ps1
#Author = Sunil Chauhan
#Email= Sunilkms@gmail.com
#Ver = 1.0
# Deleting All Emails From a Specific Folder from a Mailbox.
# this script usese EWS to find and delete all the items from the user's defined folder.
#########################################

$user = "admin@LetsExchange.in"
$pass = "Password"
$Folder = "\Deleted Items" #replace with the folder Name

$toDate= get-date -Format MM/dd/yyyy

#from date is hard coded in line no 87 to 01/01/2014 you can change it as per your search criteria.

#Web Service Path
$EWSServicePath = "C:\Program Files\Microsoft\Exchange\Web Services\2.0\Microsoft.Exchange.WebServices.dll"

#Importing WebService DLL
Import-Module $EWSServicePath

#Creating Service Object for O365
$Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService

#for exchange 10 uncomment the below lines
#$ExchVer = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP1
#$Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService($exchver)

$service.Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials -ArgumentList $user, $pass

#Setting up EWS URL
$EWSurl = "https://outlook.office365.com/EWS/Exchange.asmx"
$Service.URL = $EWSurl

# Defining Itemview depth
$ItemView = New-Object Microsoft.Exchange.WebServices.Data.ItemView(10000)

$MailboxRootid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot,$user)
$MailboxRoot = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$MailboxRootid)

# Get Folder ID from Path
Function GetFolder()
 {
 # Return a reference to a folder specified by path

 $RootFolder, $FolderPath = $args[0];
 $Folder = $RootFolder;
 if ($FolderPath -ne '\')
 {
 $PathElements = $FolderPath -split '\\';

 For ($i=0; $i -lt $PathElements.Count; $i++)

 {
 if ($PathElements[$i])
 {
 $View = New-Object Microsoft.Exchange.WebServices.Data.FolderView(2,0);
 $View.Traversal = [Microsoft.Exchange.WebServices.Data.FolderTraversal]::Deep;
 $View.PropertySet = [Microsoft.Exchange.WebServices.Data.BasePropertySet]::IdOnly;
 $SearchFilter = New-Object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.FolderSchema]::DisplayName, $PathElements[$i]);

 $FolderResults = $Folder.FindFolders($SearchFilter, $View);

 if ($FolderResults.TotalCount -ne 1)
 {
 # We have either none or more than one folder returned... Either way, we can't continue
 $Folder = $null;
 Write-Host "Failed to find " $PathElements[$i];
 Write-Host "Requested folder path: " $FolderPath;
 break;
 }

 $Folder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service, $FolderResults.Folders[0].Id)
 }
 }
 }

 $Folder;
 }

try {
 $FolderObject = GetFolder ($MailboxRoot, $folder)
 #Date from and To
 #$findItemResults = $FolderObject.FindItems("System.Message.DateReceived:01/01/2014..$todate",$ItemView)

 $findItemResults = $FolderObject.FindItems($ItemView)
 foreach ($item in $findItemResults.Items) {
 try {
 #Comment Below out to not delete
 [void]$item.Delete([Microsoft.Exchange.WebServices.Data.DeleteMode]::HardDelete)
 $Deleted ++

 #Uncomment below to list before deleting
 #Write-host $item.DateTimeReceived
 } catch {
 Write-warning "Unable to delete item, $($item.subject). $($Error[0].Exception.Message)"
 }
 }

 if ($Deleted -gt 0) { Write-host "$Deleted mail items deleted from the Inbox." }

} catch {

 Write-warning "Could not connect to Inbox.$($_.exception.message)"

 }