Abwesenheitsassistent für Admins

Es beginnt ja wieder gerade die Ferienzeit und viele Kollegen beginnen ihren Sommerurlaub. Leider wird häufig vergessen den Abwesenheitsassistenten zu aktivieren. Damit der Abwesenheitsassistent nicht via Exchange Shell aktiviert werden muss, sondern bequem in einer kleinen GUI, habe ich den „Abwesenheitsassistenten für Admins“ erstellt. Das kleine PowerShell Script stellt eine einfache GUI zum aktivieren der automatischen Antworten bereit und sieht ähnlich wie der Outlook Abwesenheitsassistent aus. Kleiner Unterschied ist, dass ein Benutzer ausgewählt werden kann, für den die automatischen Antworten aktiviert werden sollen.

Der „Admin Abwesenheitsassistent schaut wie folgt aus und die Bedienung ist sehr einfach:

Einfach einen Benutzer auswählen, für den die automatischen Antworten aktiviert werden sollen und auf „Laden“ klicken. Danach die gewünschten Einstellungen auswählen und auf „Speichern“ klicken. Das war auch schon alles. Auf dem gleichen Weg lassen sich auch die automatischen Antworten deaktivieren: Benutzer laden. „Keine automatischen Antworten senden“ auswählen und speichern. Das kleine Statusfenster zeigt nach dem Laden des Benutzerkontos den aktuellen Status des Abwesenheitsassistenten an. Die beiden Nachrichtenbereiche zeigen eine kleine Vorlage an, welche direkt im Script bearbeitet werden kann. Wenn gewünscht kann dort auch ein bisschen HTML eingefügt werden, damit es keine reine Nur-Text Nachricht ist.

Das Script habe ich mit Power Shell Studio 2017 erstellt (eine neuere Version hatte ich leider nicht). Die Projektdateien inkl. des Scripts habe ich auf GitHib veröffentlicht, so kann es jeder leicht anpassen:

Das PowerShell Script „Admin-Abwesenheitsassistent.Export.ps1“ kann direkt auf Exchange Server 2013 – 2019 ausgeführt werden, die kleine Vorlage für automatische Antworten finden sich ab Zeile 134. Es wird nur die Datei „Admin-Abwesenheitsassistent.Export.ps1“ benötigt um das Script auszuführen. Die restlichen Dateien werden nur benötigt, wenn ihr das Script mit PowerShell Studio anpassen möchtet.

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.

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

          $InternalMessage = „Hallo Kollegen,<br/>
          ich bin bis zum XX.XX.XXXX nicht im Haus und bearbeite Mails daher nicht.<br/>
          Ihre Mail wird nicht automatisch weitergeleitet. Bitte wenden Sie sich in dringenden Fällen an:<br/>
          Vertretung XX<br/>
          Mit frerundlichen Grüßen,<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