Out-of-office assistant for admins

The vacation season is just beginning and many colleagues are starting their summer vacation. Unfortunately, they often forget to activate the out-of-office assistant. I have created the "Out of Office Assistant for Admins" so that the Out of Office Assistant does not have to be activated via Exchange Shell, but can be conveniently activated in a small GUI. The small PowerShell script provides a simple GUI for activating the automatic replies and looks similar to the Outlook Out of Office Assistant. The only difference is that a user can be selected for whom the automatic replies should be activated.

The "Admin Out of Office Assistant" looks like this and is very easy to use:

Simply select a user for whom the automatic responses are to be activated and click on "Load". Then select the desired settings and click on "Save". That's all there is to it. Automatic replies can also be deactivated in the same way: Load user. Select "Do not send automatic replies" and save. After loading the user account, the small status window shows the current status of the Out of Office Assistant. The two message areas show a small template which can be edited directly in the script. If desired, a bit of HTML can also be inserted there so that it is not just a plain text message.

I created the script with Power Shell Studio 2017 (unfortunately I didn't have a newer version). I have published the project files including the script on GitHib, so anyone can easily customize it:

The PowerShell script "Admin-Absence Assistant.Export.ps1" can be executed directly on Exchange Server 2013 - 2019, the small template for automatic responses can be found from line 134. Only the file "Admin-Absence Assistant.Export.ps1" is required to execute the script. The remaining files are only needed if you want to customize the script with PowerShell Studio.

21 thoughts on “Abwesenheitsassistent für Admins”

  1. Hallo,

    was mache ich falsch?

    Admin-Abwesenheitsassistent.Export.ps1:189 Zeichen:19
    + Sign up
    + ~
    Das kaufmännische Und-Zeichen (&) ist nicht zulässig. Der &-Operator ist für eine zukünftige Verwendung reserviert.
    Verwenden Sie das kaufmännische Und-Zeichen in doppelten Anführungszeichen („&“), um es als Teil einer Zeichenfolge zu
    übergeben.
    In C:\scripte\Admin-Abwesenheitsassistent.Export.ps1:192 Zeichen:180
    + … -details-target btn-link d-lg-none mt-1 color-fg-inherit“> <svg aria …

    Reply
  2. Das Skript ist absolut super! :-)
    Mir sind ein paar Kleinigkeiten aufgefallen, die mich etwas irritiert haben bzw. als Feature Request noch eine Anregung wären:
    – Das Statusfenster oben rechts ist sehr „dezent“. Ich würde einen Statusbutton „Aktiviert“ in grün und „Deaktiviert“ in Rot oder so übersichtlicher finden. (Ist aber reine Geschmackssache)
    – Nach „Speichern“ wäre eine Rückmeldung schön, der Übersicht wegen: „OK“, oder „Erfolgreich“ oder so. Gerne auch grün für OK und rot für Fehler.
    – Richtig luxuriös wäre natürlich, wenn von dem ausgelesenen User Vorname und Nachname im Text automatisch mit den Daten aus dem AD ausgefüllt werden könnte! :-)
    Verschiedene Texte als Vorlage wäre ebenfalls sehr cool, aber das ist dann tatsächlich nur nice to have, aber nicht erforderlich.
    Insgesamt ein richtig cooles Tool! Vielen vielen Dank fürs Teilen! :-))))

    Reply
  3. Erhalte nun folgende Fehlermeldung beim Laden eines Postfaches.

    Successfully loaded Mailbox
    Get-MailboxAutoReplyConfiguration : Das Postfach /o=FH-xyz/ou=Exchange Administrative Group
    (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=xyz-xyz-1RZ/cn=Microsoft System Attendant kann nicht geöffnet
    werden.
    In D:\Skripte\Exchange Abwesenheitsassistent\Admin-Abwesenheitsassistent.Export.ps1:405 Zeichen:14
    + … $state = Get-MailboxAutoReplyConfiguration $global:mailbox | selec …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [Get-MailboxAutoReplyConfiguration], MailboxOfflineException
    + FullyQualifiedErrorId : [Server=EXCH-xyz-xyz-1K,RequestId=b3d76005-7513-4d1d-99ec-481668a87f00,TimeStamp=28.06.20
    22 12:59:57] [FailureCategory=Cmdlet-MailboxOfflineException] 9A365BBF,Microsoft.Exchange.Management.StoreTasks.Ge
    tMailboxAutoReplyConfiguration

    Habe die Befehle (mit geladenem PSSnap-In) von Zeile 400 und 405 manuell in einer PS ausgeführt. Erhalte den selben Fehler. PS mit erweiterten Rechten erzielt das gleiche Ergebnis. Das Ausführen der Befehle direkt in der Exchange-Shell (auf dem selben Server) funktioniert fehlerfrei.
    Kennt noch jemand das Problem??

    Reply
    • Nachtrag:
      Das Skript wird nicht auf dem Exchange Server direkt ausgeführt, sondern auf einem anderen Server bei dem die Exchange Verwaltungstools installiert sind. Hier tritt der Fehler auf.

      Reply
  4. Wollte für einen User eine OOO-Nachricht setzen ohne TimeFrame und nur für externe Organisationen. Script zeigt zwar keine Fehler, aber wenn ich die Gui beende und neu starte und beim Benutzer auf „laden“ gehe, ist der Status:

    Status: Enabled
    Startzeit: 06/28/2022 14:00:00
    Endzeit: 06/29/2022 14:00:00

    Aber unten ist „keine autom. Anworten senden“ aktiv und alles ausgegraut und mein Text ist weg.

    Reply
  5. Hi Frank,

    ich hätte noch einen Verbesserungsvorschlag.
    Wenn der Benutzer die Checkbox „Automatische Nachrichten an Absender außerhalb der Organisation senden“ nicht gesetzt hat, funktioniert es über das Script nur für interne Absender. Der Text wird zwar übernommen aber nicht aktiviert.

    Gruß Marco

    Reply
  6. Hallo Frank,

    das ist eine super Idee, leider macht mein Exchange 2016 einen Fehler beim Speichern.

    Successfully loaded Mailbox
    True
    Enable with TimeFrame
    06/27/2022 00:00:00
    06/27/2022 23:00:00
    WARNUNG: Unerwarteter Fehler. Ein Watson-Abbild wird generiert: Der Zugriff auf den Registrierungsschlüssel
    „HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\AssistantsQuarantine\2a1b2fd9-b830-4bcb-bfad-d1592c8b4224\powersh
    ell\PoisonControl\PoisonControlComposite“ wurde verweigert..
    Set-MailboxAutoReplyConfiguration : Der Zugriff auf den Registrierungsschlüssel „HKEY_LOCAL_MACHINE\System\CurrentContr
    olSet\Services\AssistantsQuarantine\2a1b2fd9-b830-4bcb-bfad-d1592c8b4224\powershell\PoisonControl\PoisonControlComposit
    e“ wurde verweigert.
    In C:\Users\server\Desktop\Admin-Abwesenheitsassistent.Export.ps1:505 Zeichen:5
    + … Set-MailboxAutoReplyConfiguration -Identity $global:mailb …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [Set-MailboxAutoReplyConfiguration], UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.Exchange.Management.StoreTasks.SetMailboxAu
    toReplyConfiguration

    bin am Exchange als Domänenadmin angemeldet.

    Grüße aus Stuttgart

    Joachim

    Reply
  7. Hallo Frank,

    in Zeile 405 scheint noch ein fest kodierter „Fehler“ enthalten zu sein. Bei uns existiert kein Postfach „frank“ :-)
    Habe versucht „frank“ an der Stelle durch $username bzw. $global:mailbox zu ersetzten. Leider friert das Programm danach irgendwie ein, obwohl der Befehl direkt in der Exchange Konsole funktioniert.

    Viele Grüße
    Florian

    Reply
    • die ‚Admin-Abwesenheitsassistent.Export.ps1‘ im PowerShell starten, nicht in der Exchange Management Shell. Jedoch schreibt das Tool bei mir alles in eine Zeile, ohne Zeilenumbrüche. Dennoch klasse Arbeit.

      Reply
      • Bei mir wird auch alles in eine Zeile geschrieben, ohne umbrüche. Hat das einen Grund ? konnte das schon jemand lösen?
        Danke
        Tom

        Reply
        • Hallo Tom,
          ich glaube die Formatierung geht verloren weil der String als html gelesen wird.

          Ich hab bei mir einfach am Ende jeder Zeile eingefügt, dann funktionierts. Beispiel:

          $InternalMessage = „Hallo Kollegen,
          ich bin bis zum XX.XX.XXXX nicht im Haus und bearbeite Mails daher nicht.
          Ihre Mail wird nicht automatisch weitergeleitet. Bitte wenden Sie sich in dringenden Fällen an:
          Vertretung XX
          Mit frerundlichen Grüßen,
          Vorname Nachname“

        • Hallo Tom,
          ich glaube die Formatierung geht verloren weil der String als html gelesen wird.

          I have simply <br/> at the end of each line, then it works. Example:

          $InternalMessage = "Hello colleagues,<br/>
          I will not be in the office until XX.XX.XXXX and will therefore not process mails.<br/>
          Your mail will not be forwarded automatically. Please contact us in urgent cases:<br/>
          Representation XX<br/>
          With kind regards,<br/>
          Vorname Nachname“

  8. Hi, man kann auch als Administrator das ecp vom User öffnen und den Abwesenheitsassistent darüber aktivieren, dafür ist kein Vollzugriff erforderlich.

    Reply

Leave a Comment