Exchange 2010/2013: Automatische Abwesenheitsnotiz

Oft vergessen Benutzer Ihre Abwesenheitsnotiz in Outlook zu pflegen wenn Sie zum Beispiel im Urlaub sind, eine mögliche Lösung wäre das automatische Eintragen der Abwesenheitsnotiz, wenn ein zentraler Kalender gepflegt wird, den Benutzer einladen wenn Sie im Urlaub sind.

Ich habe dazu ein kleines Script erstellt, welches einen Kalender via EWS abfragt und bei nicht gesetzter Abwesenheitsnotiz eine Entsprechende Notiz erstellt. Für das Script braucht Ihr die EWS Managed API:

http://www.microsoft.com/en-us/download/details.aspx?id=35371&WT.mc_id=rss_alldownloads_all

und ein Resourcenpostfach (zum Beispiel mit dem Namen “Urlaubskalender”). Das Script kann einfach per Aufgabenplanung jeden Morgen um 06:00 Uhr laufen.

Der Benutzer der das Script ausführt benötigt entsprechende Rechte um Abwesenheitsnotizen zu erstellen, sowie die folgenden Rechte auf dem Kalender des Abwesenheitskalenders:

Abwesenheitsnotiz

Die Benutzer müssen dann den Urlaubskalender als Resource zu Ihrem Termineintrag im Outlook einladen. Hier das Script.

#————————————————————————————–
# Abwesenheitsnachrichten automatisiert erstellen
# www.frankysweb.de
#
# by Frank Zöchling
# Version 0.1
#
#————————————————————————————–

$mailboxName = „urlaub@frankysweb.de“

#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)

#Kalenderdaten holen

$Propset = New-Object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties)
$folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Calendar, $mailboxName)
$calendarFolder = [Microsoft.Exchange.WebServices.Data.calendarFolder]::Bind($service, $folderid)
$calendarView = new-object Microsoft.Exchange.WebServices.Data.CalendarView([System.DateTime]::Now, [System.DateTime]::Now.AddDays(0))
$Calendarview.PropertySet = New-Object Microsoft.Exchange.WebServices.Data.PropertySet($Propset)
$calendarView.MaxItemsReturned = 200;
$resultlist = $calendarFolder.FindAppointments($calendarView)
$resultlist.load($Propset)

#Kalender verarbeiten und OOF aktivieren

foreach ($result in $resultlist)
{
$person = $result.Organizer
$mail = $person.Address
$name = $person.Name
$urlaubstart = $result.Start
$urlaubende = $result.End
$start = $urlaubstart
$ende = $urlaubende
$urlaubende = $urlaubende.AddDays(1)
$urlaubende = $urlaubende  | get-date -Format dd.MM.yyyy
$urlaubstart = $urlaubstart | get-date -Format dd.MM.yyyy

$status = Get-MailboxAutoReplyConfiguration -Identity $mail
$status = $status.AutoReplyState

if ($status -match „Disabled“)
{

# Hier Text für die externe Nachricht eingeben:
$txtextern = “

<html>
<body>
Sehr geehrte Damen und Herren, <br>
ich bin zur Zeit nicht im Büro. Sie können mich ab dem $urlaubende wieder wie gewohnt erreichen. <br>
Mit freundlichen Gruessen, <br>
$name
</body>
</html>


#Hier Text für die interne Nachricht eingeben:
$txtintern = “

<html>
<body>
Hallo Kollegen, ich bin im Urlaub und am $urlaubende wieder da. <br>
$name
</body>
</html>

$autoreply = Set-MailboxAutoReplyConfiguration -Identity $mail -StartTime $start -EndTime $ende -AutoReplyState Scheduled -ExternalMessage $txtextern -InternalMessage $txtintern
}
}

4 Kommentare zu “Exchange 2010/2013: Automatische Abwesenheitsnotiz”

  1. Hi,
    irgendwie ist bei mir entweder der Wurm drin, oder es hat sich was geändert durch SP und Updates.
    Beim ausführen kommt diese Fehlermeldung:

    Get-MailboxAutoReplyConfiguration: Die Benennung „Get-MailboxAutoReplyConfiguration“ wurde nicht als Name eines Cmdlet …. erkannt.

    Die exakte Stelle ist hier:

    $status = Get-MailboxAutoReplyConfiguration -Identity $mail
    Fehlerdetail: Object not Found

  2. Hallo Frank,

    ich habe Deine Demo-Konfig Server 2012R2 als DC/Exchange 2013 hinter Sophos UTM mit ADSL mit allem Drum und Dran am laufen. Einzig die automatischen Antworten aus Outlook (2016 Professional) heraus wollen nicht funktionieren. Es wird immer mit der Meldung „Ihre Einstellungen für automatische Anwoten können nicht angezeigt werdden, da der Server zurzeit nicht verfügbar ist. Versuchen…“ Autodiscover funktioniert prächtig. Hast Du einen Hinweis woran das liegen könnte?

    Viele Grüße
    Dominik

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.