Hallo Leser,

heute melde ich mich mal wieder, diesmal mit etwas neuem. In großen Organisationen kommt es oft vor das Benutzer vergessen ihre Abwesenheitsnotiz ( Out of Office) Nachricht zu hinterlegen. Entweder vor einem geplanten Urlaub oder vor ungeplanter Krankheit. Sollte es nun so sein dass sich diese Benutzer nicht von außerhalb anmelden können o.ä. muss der HelpDesk oder ein Exchange-Administrator sich der Sache annehmen. Dies gestaltete sich bei Exchange Server 2003 relativ kompliziert: „Besitzerrechte vergeben, Postfach in neuem Profil einbinden, Out of Office Meldung hinterlegen.“

Mit Exchange Server 2010 kann die Konfiguration der „MailboxAutoReplyConfiguration“  relativ simpel mit der PowerShell realisiert werden. Und genau dafür habe ich nun ein Script geschrieben.

Das Script leitet durch ein Menü mit insgesamt 6 Punkten (Bild 1):

  1. Anmelden –> Am Exchange Server anmelden (Bild 2)
  2. Out of Office Text –> Hinterlegt den Text für den Absender und Aktiviert OoO (Bild 3)
  3. Out of Office Aktivieren –> Aktiviert die Abwesenheitsnotiz für den Benutzer (Bild 4)
  4. Out of Office deaktivieren –> Deaktiviert die Abwesenheitsnotiz für den Benutzer (Bild 5)
  5. Status von Out of Office –> Zeigt den Status für den ausgewählten Benutzer an (Bild 6)
  6. Abmelden –> Vom Exchange Server abmelden (Bild 7)

Das Script kann von einem Windows 7 / 8 Arbeitsplatz ausgeführt werden und benötigt keine Exchange Verwaltungskonsole auf dem System. Es wird eine PowerShell Remotesitzung zu einem angegebenem Exchange-Server hergestellt.

 

#===========================================================#
# Exchange Server 2010 Out of Office Tool 1.0.0.0           #
# © Andres Sichel // blog.asichel.de // blog@asichel.de     #
# Hilft bei der Konfiguration von Abwesenheitsnachrichten   #
# für Benutzer mit Mailboxen auf einem Exchange Server 2010 #
#                                                           #        
#===========================================================#
Clear-Host

#Titel der Abfrage
$title = "Exchange Server 2010 Out of Office Tool `nVersion 1.0.0.0  `
© Andres Sichel // blog.asichel.de // blog@asichel.de `n 
Hilft bei der Konfiguration von Abwesenheitsnachrichten `
für Benutzer mit Mailboxen auf einem Exchange Server 2010 `n  "

#Die Abfrage
$message = "Welche Aufgabe soll ausgeführt werden?"

#Menueoptionen
$Anmelden = New-Object System.Management.Automation.Host.ChoiceDescription "&1.Anmelden" , "Am Exchange Server anmelden "
$Nachricht = New-Object System.Management.Automation.Host.ChoiceDescription "&2.Out of Office Text" , "Hinterlegt den Text für Absender und Aktiviert OoO"
$Active = New-Object System.Management.Automation.Host.ChoiceDescription "&3.Out of Office Aktivieren" , "Aktiviert die Abwesenheitsnachricht für den Benutzer"
$InActive = New-Object System.Management.Automation.Host.ChoiceDescription "&4.Out of Office Deaktivieren" , "Deaktiviert die Abwesenheitsnachricht für den Benutzer"
$Status = New-Object System.Management.Automation.Host.ChoiceDescription "&5.Status von Out of Office" , "Zeigt den Status für den Ausgewählten Benutzer an"
$Abmelden = New-Object System.Management.Automation.Host.ChoiceDescription "&6.Abmelden" , "Vom Exchange Server abmelden"

#Die Menüoptionen in die Variable schreiben
$options = 
[System.Management.Automation.Host.ChoiceDescription[]]($Anmelden, $Nachricht , $Active, $InActive, $Status, $Abmelden) #Erstellen der Schleife, damit nach einer auswahl das Menü erneut geladen wird :outerloop do { #Das Ergebnis aus dem Menü in Variable, 0 ist die Standardantwort = Anmelden $result = $host.ui.PromptForChoice($title, $message, $options, 0) #Ab hier wird nun die Eingabe gewertet und die dementsprechenden Aktion ausgeführt switch ($result) { 0 { #Am Exchange Server anmelden #Zertifikatsprüfungen abschalten $SkipCertificate = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck #Anmeldedaten erfragen $cred = Get-Credential #PS-Session starten --> Bei connection URI den korrekten Exchange 2010 Servernamen eingeben, vorzugsweise CAS-Server $Session = New-PSSession ` -ConfigurationName Microsoft.Exchange ` -ConnectionUri http://server.domain.local/PowerShell/` -Authentication Kerberos ` -SessionOption $SkipCertificate ` -credential $cred ` -Name Exchange #Importieren der erzeugten Session in die aktuelle Session, lokal gleichlautende Befehle werden ersetzen Import-PSSession -Session $Session -AllowClobber Write-Host -foregroundcolor red -backgroundcolor yellow "Erfolgreich angemeldet, los gehts!" } 1 { #Abwesnheitsnachricht konfigurieren & Aktivieren #Nach einem Mailbox benutzer fragen $MailboxAlias1 = Read-Host "Das Postfach bitte" #Interne Abwensheitsnachricht hinterlegen $intern = Read-Host "Bitte die Abwensenheitsnachricht für Interne Absender hinterlegen" #Externe Abwesenheitsnachricht hinterlegen $extern = Read-Host "Bitte die Abwesenheitsnachricht für Externe Abenseder hinterlegen" #Abwensenheitsnachricht konfigurieren Set-MailboxAutoReplyConfiguration $MailboxAlias1 -AutoReplyState enabled -InternalMessage "$intern" -ExternalMessage "$extern" Write-Host -foregroundcolor red -backgroundcolor yellow "Die Abwesenheistnotiz fuer das Konto $MailboxAlias1 wurde gesetzt." } 2 { #Aktivieren der Abwensenheitsnotiz #Nach einem Mailbox benutzer fragen $MailboxAlias2 = Read-Host "Das Postfach bitte" Set-MailboxAutoReplyConfiguration $MailboxAlias2 -AutoReplyState enabled Write-Host -foregroundcolor red -backgroundcolor yellow "Die Abwesenheistnotiz fuer das Konto $MailboxAlias2 wurde aktiviert." } 3 { #Deaktivieren der Abwesenheitsnotiz $MailboxAlias3 = Read-Host "Das Postfach bitte" Set-MailboxAutoReplyConfiguration $MailboxAlias3 -AutoReplyState disabled Write-Host -foregroundcolor red -backgroundcolor yellow "Die Abwesenheistnotiz fuer das Konto $MailboxAlias3 wurde deaktiviert." } 4 { #Status für einen Benutzer Abfragen $MailboxAlias4 = Read-Host "Das Postfach bitte" Get-MailboxAutoReplyConfiguration $MailboxAlias4 Write-Host -foregroundcolor red -backgroundcolor yellow "Die Abwesenheitsinformationen für $MailboxAlias4" } 5 { #Die Sessions wieder sauber abbauen Remove-PSSession -Name Exchange clear-host Write-Host -foregroundcolor red -backgroundcolor yellow "Erfolgreich abgemeldet" } } } #Erst wenn die Eingabe Abmelden registriert wird beendet sich die Schleife while ($result -ne 5)

Ich habe das Script hier auch noch zum Download als *.zip Datei: Out of Office Tool

Theoretisch sollte das Programm auch mit Exchange Server 2013 funktionieren. Ich hatte aber bisher noch keine Möglichkeit dies zu testen. Gerne darf das Script auch weiter entwickelt werden.
Update: Ich habe das Programm inzwischen mit Exchange Server 2013 auf Windows Server 2012 R2 getestet. Auch hier funktioniert es einwandfrei :)