Powershell Outlook Mails verschieben

pcBauer

Lieutenant
Registriert
Feb. 2007
Beiträge
942
Hallo Leute,

Ich darf ein Powershell Script so modifizieren, dass es nicht geflaggte Mails mit bestimmten Betreff in einen anderen Ordner verschiebt.
Genutzt wird in dem Script für den Outlook-Zugriff MAPI falls von Relevanz.

Dazu Habe ich ein foreach-Objekt erzeugt, das mir die gewollten Mails rausfiltert.
(Das foreach-Objekt sucht nach einem Stichwort im Mail-Betreff)

Mein hauptsächliches Problem ist, dass ich den Befehl zum verschieben für mein $_-Objekt nicht kenne.

Kennt jemand eine Internetseite über Funktionen (oder Methoden) für mein foreach-Objekt, das würde mir schon weiterhelfen.

Ich benötige keine große Anleitung für die Powershell, nur den Move-Befehl für mein Foreach-Objekt.

Anbei der Code:
$mailtext = $inbox.items | foreach {
if($_.subject -match "Stichwort"){
if($_.flagstatus -match "2"){
"`n"+$_.subject -replace "Infotext über geflaggte Mails","" -replace " mit der Priorität: 1",""
}
}
if($_.flagstatus -match "1"){
"`nerledigt: "+$_.subject

}
}
Es geht also um die letzte if-Abfrage.

Danke :)
 
Zuletzt bearbeitet:
Ich kenne schlicht den Befehl für das eigentliche Verschieben nicht :(

Habe hier die Fassung bekommen, die eine Zusammenfassung als Mail über die geflaggten Mails verschickt und mein Auftrag ist die nicht geflaggten Mails vom Posteingang in einen Ordner zu verschieben.

Da ich noch nicht so viel mit Powershell zu tun hatte, weiß ich nicht, welche Funktionen einem bei der Verwendung von foreach-Objekten zur Verfügung stehen.

Ich versuch mal Eclipse + Powershell Plugin zu verwenden, vielleicht bietet das Vorschläge.
 
Eigentlich müsste das mit einem COM-Object zu lösen sein.

Code:
$outlook = New-Object -comObject Outlook.Application
$outlook.Session.*

Ich kann dir leider gerade nicht mehr sagen, da ich hier kein Outlook habe.
Die Referenz über das Outlook Object Model sollte dich aber weiterbringen, einfach mal goolen...
 
Okay, danke, ich schau mal, ob ich mich reinlesen kann. :)

Edit:
Habs versucht, bin gescheitert, habe dann heute eine ganz simple Funktion fürs Verschieben gefunden, doch nun habe ich ein neues Problem. Der Code für das verschieben sieht folgendermaßen aus:
Code:
if($_.flagstatus -match "1"){
    [void]$_.Move($ns.GetFolder.Item("Powershell"))
  }
Code:
if($_.flagstatus -match "1"){
    [void]$_.Move($ns.GetDefaultFolder($olFolderInbox).GetFolder.Item("Powershell"))
  }

Mit dem unteren Script funktionierts, obwohl der einzige Unterschied ist, dass der in den zu verschiebenden Ordner als Unterordner vom Posteingang angelegt wurde.

Mit dem oberen Code kommt immer wieder die Fehlermeldung:
Code:
Exception calling "get_Item" with "1" argument(s): "Der Vorgang konnte nicht ausgeführt werden. Ein Objekt wurde nicht gefunden."
At line:18 char:35
+     [void]$_.Move($ns.Folders.Item <<<< ("Powershell"))
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

hoffe ihr könnt mir weiterhelfen, ist ja hoffentlich wirklich nur noch das kleine Mistding, das sich dagegen wehr, dass das Script funzt :D

Danke
 
Zuletzt bearbeitet:
Zurück
Oben