Normalerweise ist es nur an einem Outlook Client oder über OWA möglich seinen eigenen Abwesenheits-Einstellungen zu ändern, bzw. eine automatische Antwort an den Sender zu schicken.

In einem aktuellen Fall zieht Kunde X mit seinem Mailserver um. In dieser Umstellungszeit sollen nun alle Sender eine automatische Antwort erhalten, dass es eben zu Problemen kommen kann oder der Empfang von E-Mail’s nicht zu 100% gewährleistet ist.

Wie schon erwähnt, gibt es keine Transport-Regel o.ä. um so eine automatische-Antwort für bestimmte Postfächer zu setzen.  Dann bin ich auf das Glen’s Exchange Dev Blog aufmerksam geworden. Glen Scales hat eine Library geschrieben (EWSOofUtil.dll), die es für einen Administrator ermöglicht, die Automatische Antwort für jeder Postfach über EWS zu setzen.

Wie es funktioniert, erkläre ich im Folgenden:

Als erstes braucht ihr die EWSOofUtil.dll:

EWSOofUtil.dll [92.3KB] –enthält auch den Quellcode

Als nächstes müsst ihr euren Client Access Server (CAS) das Ausführen von Scripten erlauben:

set-ExecutionPolicy RemoteSigned

Um Änderungen an einem Postfach durchzuführen, müsst ihr die Berechtigung daran haben:

Add-MailboxPermission “test.user” -User “Administrator” -AccessRights FullAccess

Hier gebe ich dem Administrator volle Berechtigung auf das Postfach von test.user.

Nun können wir die Oof-Einstellungen setzen:

[Reflection.Assembly]::LoadFile(“C:UsersadministratorDesktopEWSOofUtilEWSOofUtil.dll”)
$ExternalMessage=”I’m out of office!”
$oofutil = new-object EWSOofUtil.OofUtil
$oofutil.setoof(“test.user@test.org”,”Enabled”,”",$ExternalMessage)

  • Als erstes müsst ihr die dll in die Powershell laden
  • Danach wird die Nachricht gesetzt, hier kann auch kompletter html Code genommen werden. Einfach über $ExternalMessage = “<html><…></html>”
  • Der letzte Befehl setzt die automatische Antwort für den User: “test.user” mit der externen Nachricht

Weitere Befehle können auch die Zeit einstellen, wann diese Nachricht gesendet wird:

$oofutil.setoof(“test.user@test.org”,”Scheduled”, [datetime]::Now.Date.ToLocalTime(),[datetime]::Now.Date.AddDays(4).ToLocalTime())

Überprüfen kann man es dann im OWA:

Weitere Beispiele für den Einsatz der dll findet ihr hier:

http://msgdev.mvps.org/setoofexamples.htm

So kann man mit schönen Powershell Skripts eine automatische Wartungsmeldung an alle Postfächer binden.

$users = Get-Mailbox -Filter (“customAttribute1 -eq ‘Firma1′”)
$email = $users | % {$_.userprincipalname}

$emails = $users | % {$_.userprincipalname}

foreach($mail in $emails){$oofutil.setoof($mail,”Enabled”,”",$ExternalMessage)}


Wenn dir dieser Artikel gefallen hat, kannst du ihn mit einem Klick auf die folgenden Buttons weiterempfehlen. Möchtest du in Zukunft keine neuen Beiträge mehr verpassen? Dann abonniere doch den RSS Feed dieses Blogs. Vielen Dank!

2 Kommentare für “{How-To}Out of Office über Exchange Server einstellen (Powershell)”

  1. Hallo

    ich habe mir ein Script gemacht – mit exact diesen Befehlen – bin erst bei der Fehlersuche über diese Beschreibung gestolpert :-)

    Es funktioniert prinzipiell alles wie beschrieben nur:
    wenn der Befehl Add-MailboxPermission und $oofutil.setoof in einem Programm ablaufen, kommt beim setoof die Fehlermeldung:
    System.Web.Services.Protocols.SoapException: Microsoft.Exchange.Data.Storage.AccessDeniedException: User is not mailbox owner.

    Wenn ich das Programm ohne Modifikation ein zweites Mal starte, dann funktioniert es – Idee wie ich das mit EINEM Programmlauf machen kann ?

    DANKE für einen Tipp – Gruß Mi.Ke.

    16.01.2012 um 14:02


  2. Hallo Mike,

    ich müsste ehrlich gesagt noch einmal schauen, wie es genau funktioniert hat :)

    Seit Exchange 2010 SP1 ist das Skript ja nicht mehr notwendig, da es nun offizielle Befehle gibt:

    Set-
    Get-MailboxAutoReplyConfiguration

    Vielleicht hilft dir das schon?

    Gruß
    MS

    16.01.2012 um 14:27


Kommentar abgeben

Current month ye@r day *