Outlook 2013 - Empty Deleted Items Folder

Welcome Forums General PowerShell Q&A Outlook 2013 - Empty Deleted Items Folder

This topic contains 4 replies, has 4 voices, and was last updated by

3 years, 1 month ago.

  • Author
  • #32504

    Points: 0
    Rank: Member

    This function is supposed to delete all items in the "Deleted Items" folder in Outlook (2013).

    function Empty-DeletedItems {
    $Outlook = New-Object -ComObject Outlook.Application
       Foreach ($Folder in $Outlook.Session.Folders){
            Foreach($MailFolder in $Folder.Folders ) {
                 if ($MailFolder.Name -eq "Deleted Items" -and $MailFolder.Items.Count -gt 0){
                        Foreach ($Item in $MailFolder.Items){

    However, when I call it, only 5-7 items get deleted from the "Deleted Items" folder. I can run it 5-10 times and the folder eventually empties, but I'm curious why it's not deleting every item in one run?

    Thanks for any help.

  • #32558

    Points: 1,759
    Helping HandTeam Member
    Rank: Community Hero

    I've never had a lot of luck with that Outlook COM object, unfortunately. It's old, and it's not terribly well designed. The fact that you're eventually able to get what you want is a small miracle ;).

  • #32565

    Points: 1
    Rank: Member

    The Outlook COM object can only access what you've got cached on your computer. Perhaps the deleted items is considered low priority so only the most recent few are loaded?

    Try to get a count on the number of items this script can see in deleted items.

  • #32607

    Points: 57
    Rank: Member

    Instead of deleting each item I think there should be a method available on the deleted items folder object to "empty deleted items" (can't recall it off the top of my head, sorry). Alternatively you could look at EWS (Exchange Web Services) and that will interact with the exchange server rather than trying to manipulate the (as Don said) old (and unreliable) Outlook COM object.

  • #32644

    Points: 0
    Rank: Member

    Thanks for the responses! This script ended up working (empties both deleted items and junk mail)

    $outlook = New-Object -comObject Outlook.Application 
    $olJunk = $outlook.Session.GetDefaultFolder(23) 
    $olDeleted = $outlook.Session.GetDefaultFolder(3) 
    $($olJunk.Items) | %{$_.Delete()} 
    $($olDeleted.Items) | %{$_.Delete()}

The topic ‘Outlook 2013 - Empty Deleted Items Folder’ is closed to new replies.