Dieses kleine Script überwacht des Posteingang eines Postfachs auf ungelesene Nachrichten. Ich habe es erstellt um Dienstpostfächer zu überwachen, aus denen andere Programme automatisch Mails verarbeiten. Mit ein paar kleinen Anpassungen lässt sich daraus auch ein Monitor für PRTG oder Solarwinds erstellen.
#————————————————————————————–
# Postfach auf ungelesene Mails prüfen
# www.frankysweb.de
#
# by Frank Zöchling
# Version 0.1
#
#————————————————————————————–$mailboxName = „journal@frankysweb.de“ #zu überprüfende Mailbox
$maxUnreadAge = „20“ #Wert in Minuten (1 Tag = 1440 Minuten)#EWS Verbindung herstellen
Add-Type -Path „C:\Program Files\Microsoft\Exchange\Web Services\2.0\Microsoft.Exchange.WebServices.dll“
$version = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP2
$service = new-object Microsoft.Exchange.WebServices.Data.ExchangeService($version)
$service.UseDefaultCredentials = $true
$service.AutodiscoverUrl($mailboxName)$inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox)
#Mails abrufen und auswerten
$today = get-date
$maxagetime = $today.AddMinutes(-$maxUnreadAge)$mails = $inbox.FindItems(100)
$unreadmails = $mails | where {$_.isRead -match „False“}
$unreadmailscount = $unreadmails | measure-object | foreach-object {$_.Count}
$unreadmailsmaxagecount = $unreadmails | where {$_.DateTimeReceived -lt $maxagetime} | measure-object | foreach-object {$_.Count}write-host „Anzahl ungelesene E-Mails: $unreadmailscount“
write-host „Anzahl ungelesene E-Mails älter als $maxUnreadAge Minuten: $unreadmailsmaxagecount“
Um das Script aufzuführen ist die EWS API 2.0 erforderlich, die API kann hier runtergeladen werden:
http://www.microsoft.com/en-us/download/details.aspx?id=35371