Skip to main content

How To Series Sample 5 : Clearing the Suggested Contacts with EWS and Powershell

In Outlook 2010 "Suggested Contacts" is feature that automatically creates a Contact for each address you send an email to . If you need clear this folder for any reason you can do this in EWS in 2010 using the new Empty operation which allows you to easily delete all the Items within a folder (without the need to use a batch operations). Here's a example of how to clear the Suggested Contacts folder note its deletes stuff so be careful. For more information about the AutoComplete cache see http://gsexdev.blogspot.com.au/2013/10/exporting-suggested-contacts-owa-auto.html

I've put a download of this script here the script itself looks like

  1. ## Load Managed API dll  
  2. Add-Type -Path "C:\Program Files\Microsoft\Exchange\Web Services\1.1\Microsoft.Exchange.WebServices.dll"  
  3.   
  4. ## Set Exchange Version  
  5. $ExchangeVersion = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP1  
  6.   
  7. ## Create Exchange Service Object  
  8. $service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService($ExchangeVersion)  
  9.   
  10. ## Set Credentials to use two options are availible Option1 to use explict credentials or Option 2 use the Default (logged On) credentials  
  11.   
  12. #Credentials Option 1 using UPN for the windows Account  
  13. $creds = New-Object System.Net.NetworkCredential("user@domain","password")   
  14. $service.Credentials = $creds      
  15.   
  16. #Credentials Option 2  
  17. #service.UseDefaultCredentials = $true  
  18.   
  19. ## Choose to ignore any SSL Warning issues caused by Self Signed Certificates  
  20.   
  21. [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}  
  22.   
  23. ## Set the URL of the CAS (Client Access Server) to use two options are availbe to use Autodiscover to find the CAS URL or Hardcode the CAS to use  
  24.   
  25. #CAS URL Option 1 Autodiscover  
  26. $service.AutodiscoverUrl("user@domain",{$true})  
  27. "Using CAS Server : " + $Service.url   
  28.    
  29. #CAS URL Option 2 Hardcoded  
  30.   
  31. #$uri=[system.URI] "https://casservername/ews/exchange.asmx"  
  32. #$service.Url = $uri    
  33.   
  34. ## Optional section for Exchange Impersonation  
  35.   
  36. #$service.ImpersonatedUserId = new-object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress, "email@domain.com")  
  37. $MailboxName = "user@domain"  
  38.   
  39. $folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot,$MailboxName)   
  40.   
  41. $fvFolderView = new-object Microsoft.Exchange.WebServices.Data.FolderView(1)  
  42. $SfSearchFilter = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.FolderSchema]::DisplayName,"Suggested Contacts")  
  43. $findFolderResults = $service.FindFolders($folderid,$SfSearchFilter,$fvFolderView)  
  44.   
  45. if($findFolderResults.Folders.Count -gt 0){  
  46.     "Emptying Suggested Contacts"  
  47.     $findFolderResults.Folders[0].Empty([Microsoft.Exchange.WebServices.Data.DeleteMode]::HardDelete, $true);  
  48. }  
  49. else{  
  50.     "Folder not found"  
  51. }  


All sample scripts and source code is provided by for illustrative purposes only. All examples are untested in different environments and therefore, I cannot guarantee or imply reliability, serviceability, or function of these programs.

All code contained herein is provided to you "AS IS" without any warranties of any kind. The implied warranties of non-infringement, merchantability and fitness for a particular purpose are expressly disclaimed.