Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Powershell Exchange Server - E-mails nach dem Lesen löschen

$
0
0

Hallo liebe Community,

ich bin neu hier im Forum und das hier ist mein erster Beitrag, deshalb ein Servus an alle.

Folgendes Problem habe ich momentan:

Auf ein Unterverzeichnis eines bestimmten Outlook-Kontos fließen ständig neue Mails mit Anhang. 

Ich möchte die Anhänge von ungelesenen E-Mails je nach Dateiformat in entsprechenden Verzeichnissen abspeichern und die E-Mails anschließend löschen.

Mein bisheriger Code:

# file path
$filepath_accepted_Attachments = “...\akzeptierte_Anhänge”
$filepath_unaccepted_Attachments = “...\Nicht_akzeptierte_Anhänge”


$account = "x@y.de"
$unterverzeichnis = "Posteingang"
$regex = "(.jpg|.log)"


    # Outlook öffnen
    $objOutlook = New-Object -comobject outlook.application
    $objMailbox = $objOutlook.GetNamespace(“MAPI”)


    # ausgelesenes Postfach und Unterverzeichnis suchen und speichern

    $Account = $objMailbox.Folders | Where-Object { $_.Name -eq $account }

    $folders = $Account.Folders | Where-Object { $_.Name -eq $unterverzeichnis }

    # in Unterverzeichnis des Postfachs ungelesene Nachrichten lesen
    # Anhänge nach ausgelesenem Regex filtern und in entsprechendem Pfad speichern
    # E-Mail als gelesen markieren und löschen
    $folders.Items.Restrict("[UnRead] = True") | foreach {
        $_.attachments | foreach {
            $filename = $_.filename

            if ($filename -match  $regex) {
                $_.saveasfile((Join-Path $filepath_unaccepted_Attachments $filename))
                $_.Parent.Unread = $false
                $_.Parent.delete()
            }
            else {
                $_.saveasfile((Join-Path $filepath_accepted_Attachments $filename))
                $_.Parent.Unread = $false
                $_.Parent.delete()
            }
        }
    }

Klammere ich die Zeilen 

$_.Parent.delete() 

aus, funktioniert alles wie gewollt. Alle ungelesenen Nachrichten werden gelesen, die Anhänge extrahiert und die Nachrichten als gelesen markiert. 

Sind die delete-Zeilen nicht ausgeklammert, wird immer nur die erste E-Mail als ungelesen markiert und gelöscht. Durch Recherchen habe ich gelesen, dass ich bei der letzten E-Mail anfangen muss und nicht bei der ersten, das hat aber auch noch nicht funktioniert.

Kann mir da jemand helfen?

Beste Grüße


Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>