Hallo Community,
ich bekomme ein Problem nicht in den Griff, hoffe jemand kann mir behilflich sein.
Aus einem Verzeichnis verschiebe ich Dateien in ein Archiv-Verzeichnis.
Handelt es sich um eine verschlüsselte Mail (ich prüfe ob HTMLBody NULL ist), dann tue nichts, da zum Verschieben sowieso keine Rechte vorhanden sind.
Handelt es sich NICHT um eine verschlüsselte Mail, verschiebe diese in Archiv-Verzeichnis.
PROBLEM: Das Script denkt irgendwann, es ist fertig, d.h. es befinden sich keine Mails mehr im Verzeichnis, obwohl das nicht stimmt.
Wie kann ich das Verzeichnis aktualisieren, damit es alle Mails liest und bei jedem Schleifendurchlauf weiß, welche die nächste Mail ist?
Code:
$FolderInbox = 6 $objOutlook = New-Object -comobject outlook.application $objMailbox = $objOutlook.GetNamespace(“MAPI”) $inbox = $objMailbox.GetDefaultFolder($FolderInbox) $targetfolder = $inbox.Folders | Where-Object { $_.Name -eq "test_powershell" } $archivefolder = $inbox.Folders | Where-Object { $_.Name -eq "test_powershell_archiv" } $Counter = $targetfolder.ShowItemCount $ItemsCount = $targetfolder.Items.Count Write-Host $ItemsCount foreach($item in $targetfolder.Items) { if($ItemsCount -gt 0) { if($item.HTMLBody) { foreach($attachement in $item.attachments) { Write-Host $attachement.filename if(!$attachement.filename) { Write-Host FileName leer } elseif ($attachement.filename -match "(.jpg|.log)") { Write-Host FileName stimmt mit Exclude-Regex überein } else { Write-Host FileName stimmt NICHT mit Exclude-Regex überein } } $item.Move($archivefolder) $ItemsCount-- } else { $ItemsCount-- } } }
Jemand eine Idee?
Das einzige was mir einfällt ist, die Mails in einen Array zu stecken und dann
- falls verschlüsselt, Index ++
- falls unverschlüsselt, Index bleibt (da Mail verschoben wird und nächste Mail an den aktuellen Index verschoben wird)
beste Grüße