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
}
}

7 thoughts on “Exchange 2010/2013: Automatische Abwesenheitsnotiz”

  1. Servus Frank.

    Ich finde die Idee hinter dem Skript großartig und würde dieses gerne auf einer Exchange 2016 und 2019 Umgebung einsetzten. Hast Du dazu schon Erfahrungen gesammelt?

    Wäre es nicht auch eine toll, wenn auch gleich die Abwesenheitsnotiz der Abwesenheit entsprechend angepasst sein würde. In dieser könnte die auf dem Termin gelesene Dauer des Termins als Dauer auch für die Abwesenheitsnotiz verwenden werden. Im Grunde suche ich schon lange nach einer Lösung die Abwesenheitsnotiz über die gesetzten Termine in Abwesenheit zu automatisieren. Warum noch eine Abwesenheitsnotiz, wenn diese über die Abfrage des Kalenderstatus automatisch erstellt sein könnte.

    Bisher habe ich noch keinen Entwickler gefunden, der diese Idee so anfing zu verfolgen wie Du.

    Reply
  2. Kann ich irgendwie die Abwesenheitsmeldung ausschalten? Ich weiss ist ein bisschen doof was ich gerade schreibe.

    Aber bei uns sind jetzt zwei Ressourcen-Kalender Stellvertreterinnen in den Ferien. Jedes mal wenn ein Benutzer „Neue Besprechungstermin“ mit dem Ressourcen Kalender erstellt bekommt die Abwesenheitsmeldung von unseren zwei Stellvertreterinnen.

    Ist das so oder kann man dies irgendwie deaktivieren?

    MFG
    Selcuk

    Reply
  3. Heutzutage gewinnt die Disziplin eSports an Popularität.
    Es ist auf der ganzen Welt populär geworden, Wetten zu platzieren
    für eSport-Ereignisse. Jetzt gibt es Buchmacherfirmen auf der Welt, die rate mal, welche
    Ereignisse während des Spiels stattfinden werden und wenn deine Prognose erfolgreich ist,
    kannst du Geld bekommen. Heute möchte ich Ihnen die GG BET-Wettfirma empfehlen, die hohe Gewinnchancen und eine sehr breite Palette an Veranstaltungen bietet.
    Wenn Sie an meinem Vorschlag interessiert sind, können Sie dies auf der Website
    überprüfen.

    Reply
  4. 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

    Reply
  5. 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

    Reply

Leave a Comment