Microsoft Outlook Postfach per Powershell sortieren und Betreff auslesen
Hallo zusammen,
da ich schon mehrere Beiträge gesehen habe, die nach so einer Lösung suchen wollte ich mal hier etwas mit euch teilen.
Dies ist ein PowerShell Skript welches ein Ordner im Postfach Scannt und die Betreffzeilen nach bestimmten Schlagwörter (in meinem Fall ein Wort) durchsucht. In diesem Beispiel ist es so, dass wenn das Schlagwort nicht in der Betreffzeile vorhanden ist, wird eine Meldung an unser Monitoring (Zabbix) geschickt. Nach den Vorgang werden die Mails in einen anderen Ordner verschoben.
Ich hoffe der Code kann den ein oder anderen helfen. Ansonsten gerne fragen.
MfG
da ich schon mehrere Beiträge gesehen habe, die nach so einer Lösung suchen wollte ich mal hier etwas mit euch teilen.
Dies ist ein PowerShell Skript welches ein Ordner im Postfach Scannt und die Betreffzeilen nach bestimmten Schlagwörter (in meinem Fall ein Wort) durchsucht. In diesem Beispiel ist es so, dass wenn das Schlagwort nicht in der Betreffzeile vorhanden ist, wird eine Meldung an unser Monitoring (Zabbix) geschickt. Nach den Vorgang werden die Mails in einen anderen Ordner verschoben.
$Term = '[' #Schlagwort für den Betreff (Nicht notwendig) Lässt alle Emails aus die nicht dieses Zeichen/Wort im
Betreff haben
$Scope = 'Ordnername' #Postfachordner der durchsucht werden soll
Add-Type -assembly "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -comobject Outlook.Application
$namespace = $Outlook.GetNameSpace("MAPI")
$Emails = $Outlook.AdvancedSearch( $Scope, "urn:schemas:httpmail:subject LIKE '%$Term%'", $false )
Start-Sleep -Seconds 10
$ergebnis = $Emails.Results | Select-Object -Property Subject
if ($ergebnis -notlike "*Suchwort*") { # if regel die sagt wenn der Betreff nicht "Suchwort" ist dann mach dies
C:\Users\administrator\Documents\zabbix\zabbix_sender.exe -vv -k backup.status -o "Fail" -z 192.168.xxx.xxx -s "Zabbix server" # Meldungsbefehl an Monitoring Zabbix
}
else {
C:\Users\administrator\Documents\zabbix\zabbix_sender.exe -vv -k backup.status -o "Success" -z 192.168.xxx.xxx -s "Zabbix server" }
Write-Host $Alarm
$Zähler = 1
#Emails verschieben
do {
$ergebnis = $Emails.Results | Select-Object -Property Subject
$store = $namespace.Stores['email@gmail.de'] #Email die betroffen ist eintragen
$root = $store.GetRootFolder()
$inbox = $root.Folders['Ordnername'] #Ordner eintragen von dem die Emails verschoben werden sollen
$targetFolder = $root.Folders['Ordnername'] #Ordner eintragen in den die Mails verschoben werden sollen
$inbox.Items |
ForEach-Object{$_.Move($targetFolder)}
$Zähler ++
$Zähler
} while($Zähler -lt 200)
Stop-Process -Name OUTLOOK
Ich hoffe der Code kann den ein oder anderen helfen. Ansonsten gerne fragen.
MfG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7533375454
Url: https://administrator.de/contentid/7533375454
Ausgedruckt am: 21.11.2024 um 17:11 Uhr
4 Kommentare
Neuester Kommentar