Wiederkehrende E-Mail-Abwesenheitsnotiz mit Powershell

Leider gibt es manchen Sonderfall, für den es keine direkten Konfigurationsmöglichkeiten in Outlook oder Exchange gibt. So ist es zwar möglich in Outlook einen Zeitraum für die Dauer einer Abwesenheitsnotiz einzustellen. Aber eine wöchentlich wiederkehrende Abwesenheitsnotiz für einen Mitarbeiter, der nicht alle Tage in der Woche da ist, kann man leider nicht ohne Weiteres festlegen.

Problem

Mit Bordmitteln kann man leider eine solche zeitgesteuerte Abwesenheitsnotiz nicht realisieren. Denn die in Outlook über den Abwesenheitsassistenten eingestellte Abwesenheitsnachricht gilt entweder dauerhaft oder für einen bestimmten Zeitraum. Diese Einstellung übernimmt der Exchange-Server und setzt diese unabhängig von Outlook um. Denn der Computer des betroffenen Mitarbeiters sollte während dessen Abwesenheit im Regelfall ausgeschaltet sein.

Mit den Regeln in Outlook selber ließe sich vielleicht etwas bauen, wodurch nur an bestimmten Tagen eine automatische Antwort-E-Mail versandt wird. Jedoch werden diese Regeln von Outlook lokal und nicht von dem Exchange-Server umgesetzt. Das würde bedeuten, dass der Computer des betroffenen Benutzers dauerhaft eingeschaltet bleiben muss um die Regel auszuführen. Bei einer kurzen Recherche konnte ich auch keine Möglichkeit finden etwas anderes als eine datumsbezogene Regel zu definieren. Hier wäre also auch etwas selbst gestricktes wie irgendein Plugin oder Skript nötig.

Am einfachsten wäre es natürlich der Benutzer würde einfach jede Woche selbständig den Abwesenheitsassistent einschalten. Aber eventuell wird dies so oft vergessen, sodass man in der IT-Abteilung dann irgendwann die Nachfrage nach einer Lösung bekommt.

 

Lösung

Zum Glück gibt es doch kaum etwas, das sich nicht automatisieren lässt. Per Powershell ist das ganze kein Problem. Mit folgendem Skript lässt sich auf dem Exchange-Server die Abwesenheitsnotiz unabhängig vom Outlook bzw. Computer des Benutzers ein- oder abschalten. Das ganze in Kombination mit der Aufgabenplanung auf dem Exchange-Server löst somit das Problem:

Ich habe mir dafür zwei einzelne Skripte erstellt. Eines zum Einschalten und eines zum Ausschalten. Für das Einschalt-Skript muss nur der Wert „enabled“ hinter dem Punkt „-AutoReply“ eingesetzt werden. Diese Skripte lässt man dann alternierend durch zwei Aufgaben auf dem Server ausführen. Das Skript zum Einschalten dann beispielsweise donnerstags, wenn der Mitarbeiter nur Montag bis Mittwoch im Unternehmen ist. Das Ausschalt-Skript könnte dann freitags abends ausgeführt werden. Sofern der Mitarbeiter montags wieder im Unternehmen ist und generell am Wochenende keine E-Mails bearbeitet werden.

Die zugestellte Abwesenheitsnachricht wäre dann übrigens die in Outlook durch den Benutzer definierte. Wenn der Benutzer diese irgendwann wegen eines Urlaubs ändert, sollte man dies berücksichtigen oder diesen Text auch per Skript anpassen. Das habe ich aber nicht getestet.

 

Funktionsweise

 

Durch den Punkt wird das angegebene Powershell-Skript nicht nur aufgerufen, sondern in das aktuelle Skript eingebunden. Das heißt die Funktionen etc. aus dem Skript stehen wie Module im eigenen Skript zur Verfügung.

Um den Exchange zu kontrollieren braucht man die Exchange-Management-Konsole. In diesem Fall aus dem Ordner „C:\Program Files\Microsoft\Exchange Server\V14\bin\“ für Exchange 2010.

 

Durch diesen Befehl verbindet man sich an den lokalen Exchange-Server.

 

Durch den letzten Befehl lässt sich für beliebige Domänenbenutzer die Abwesenheitsnotiz aktivieren oder deaktivieren. Zum Einschalten muss nur „disabled“ in „enabled“ geändert werden.

 

 

Wissenswertes

Mit folgendem Befehl kann man sich die aktuelle Konfiguration der Abwesenheitsnotiz ansehen:

Dabei habe ich mich von den dort angegebenen Start- und Endzeiten irritieren lassen. Der Exchange-Server zeigte diese an, aber diese waren nicht aktiv. Auch in Outlook waren die hinterlegten Zeiten ausgegraut.

Bei einem Gegentest habe ich dann gesehen, dass diese Zeiten immer so angegeben werden, wie sie in Outlook eingestellt sind. Ob der Exchange-Server diese wirklich berücksichtigt entscheidet der „AutoReplyState“:

Bei „Scheduled“ beachtet der Exchange-Server die hinterlegten Zeiten.

„Enabled“ bedeutet, dass die Abwesenheitsnotiz dauerhaft aktiv ist.

 

Schreibe einen Kommentar