Exchange 2019: Ressourcenpostfächer mit PowerShell erstellen

Leider bietet Exchange 2019 nur wenige Einstellungen zu Ressourcenpostfächer (Raum- und Gerätepostfächern) im Exchange Administrative Center. Viele Einstellungen zu Buchungsberechtigungen oder Kalendereinstellungen lassen sich nur über die Exchange Management Shell verwalten.

Ressourcenpostfächer mit der Exchange Management Shell erstellen

Mit kleinen PowerShell Scripten lassen sich Ressourcenpostfächer schnell und immer nach dem gleichen Schema anlegen. Hier mal zwei Beispiele für ein Raum- und ein Gerätepostfach. Diese beiden Fälle wurden öfters durch Leser angefragt. Zum einen soll ein Besprechungsraum nur durch bestimmte Personen buchbar sein. Ein Gerätepostfach, welches als Urlaubskalender verwendet wird, soll die Buchung von mehreren Personen gleichzeitig akzeptieren.

Raumpostfächer

Raumpostfächer lasen sich mittels der Exchange Management Shell auf einfache Art und Weise anlegen. Es genügt eine Zeile um einen Raumpostfach zu erzeugen:

New-Mailbox -Alias ITRoom1 -Name "IT Besprechungsraum" -Room
Exchange 2019: Ressourcenpostfächer mit PowerShell erstellen

Das neu erstellte Raumpostfach „IT Besprechungsraum“ hat nun die folgenden Kalendereinstellungen:

Exchange 2019: Ressourcenpostfächer mit PowerShell erstellen

Die Standard Einstellung zu „AutomateProcessing“ sind aber nicht ideal, denn der Raum soll ja valide Buchungsanfragen automatisch annehmen. Wenn nun aber die Einstellung zu „AutomateProcessing“ von „AutoUpdate“ zu „AutoAccept“ umgestellt wird, akzeptiert das Raumpostfach von allen Exchange Benutzern Buchungsanfragen.

Mit dem folgenden Befehl akzeptiert das Raumpostfach automatisch nur noch Buchungsanfragen von Mitgliedern der Gruppe „IT_Department“:

Set-CalendarProcessing ITRoom1 -AutomateProcessing AutoAccept -BookInPolicy IT_Department -AllBookInPolicy $false
Exchange 2019: Ressourcenpostfächer mit PowerShell erstellen

Die jeweils nötigen Einstellungen für Raumpostfächer können mittels einem kleinem PowerShell Script automatisiert werden:

$RoomMailboxName = "Marketing Besprechungsraum"
$RoomMailboxAlias = "Marketing_Besprechungsraum"
$RaumMailboxBookInPolicy = "Marketing_Department"

$NewRoomMailbox = New-Mailbox -Alias $RoomMailboxAlias -Name $RoomMailboxName -Room
$NewRoomMailbox | Set-CalendarProcessing -AutomateProcessing AutoAccept -BookInPolicy $RaumMailboxBookInPolicy -AllBookInPolicy $false
Get-CalendarProcessing $NewRoomMailbox | fl

Mit diesem einfachen Beispiel wird ein Raumpostfach mit dem Anzeigenamen „Marketing Besprechungsraum“ und dem Alias „Marketing_Besprechungsraum“ erzeugt. Dann wir der Verteilergruppe „Marketing Department“ die Buchungsberechtigung zugewiesen. So dürfen nur noch Mitglieder der Gruppe „Marketing Department“ den Raum buchen:

Script für die Erstellung der Postfächer

Weitere Parameter lassen sich einfach in dem Script ergänzen und nach den eigenen Anforderungen anpassen. Beispielsweise akzeptiert das Raumpostfach in der Standardeinstellung nur Buchungsanfragen, welche 24 Stunden nicht überschreiten (MaximumDurationInMinutes=1440). Wenn längere Zeiträume akzeptiert werden sollen, kann das Script beispielsweise wie folgt geändert werden:

$RoomMailboxName = "Marketing Besprechungsraum"
$RoomMailboxAlias = "Marketing_Besprechungsraum"
$RaumMailboxBookInPolicy = "Marketing_Department"

$NewRoomMailbox = New-Mailbox -Alias $RoomMailboxAlias -Name $RoomMailboxName -Room
$NewRoomMailbox | Set-CalendarProcessing -AutomateProcessing AutoAccept -BookInPolicy $RaumMailboxBookInPolicy -AllBookInPolicy $false -MaximumDurationInMinutes 7200
Get-CalendarProcessing $NewRoomMailbox | fl

Auf diese Art lässt sich jeder Parameter zu den Kalendereinstellungen in einem Schritt ändern. Raumpostfächer können somit nach immer dem gleichen Schema angelegt werden.

Gerätepostfächer

Gerätepostfächer lassen sich auf die gleiche Art und Weise wir Raumpostfächer einrichten, diese benötigen aber oft etwas andere Einstellungen. Oft werden Gerätepostfächer für alle Arten von Kalendern benutzt, nicht nur Geräte wie Beamer oder Fahrzeuge, sondern auch häufig für Urlaubskalender.

Ein Gerätepostfach lässt sich über den folgenden Befehl anlegen:

New-Mailbox -Alias Urlaubskalender -Name "Urlaubskalender" -Equipment
Gerätepostfächer mit PowerShell erstellen

Auch hier sind die Buchungseinstellungen meistens nicht ideal, zum Beispiel soll der Kalender ja Buchungsanfragen direkt akzeptieren und im Falle eines Urlaubskalenders auch die Buchung von mehreren Personen gleichzeitig zulassen. Außerdem sind längere Buchungszeiträume bei einem Urlaubskalender üblich. Wie auch schon bei Raumpostfächern lassen sich daher die Einstellungen anpassen:

Set-CalendarProcessing Urlaubskalender -AutomateProcessing AutoAccept -MaximumDurationInMinutes 40230 -AllowConflicts $true
Gerätepostfächer mit PowerShell erstellen

Auch diese Einstellungen lassen sich mit einem kleinen PowerShell Script wieder automatisieren. Wenn gewünscht kann auch hier wieder die Buchung auf bestimmte Gruppen eingeschränkt werden. Hier mal ein Beispiel:

$EquipmentMailboxName = "Urlaubskalender Marketing"
$EquipmentMailboxAlias = "Urlaub_Marketing"
$EquipmentMailboxBookInPolicy = "Marketing_Department"

$NewEquipmentMailbox = New-Mailbox -Alias $EquipmentMailboxAlias -Name $EquipmentMailboxName -Room
$NewEquipmentMailbox | Set-CalendarProcessing -AutomateProcessing AutoAccept -MaximumDurationInMinutes 40230 -AllowConflicts $true -BookInPolicy $EquipmentMailboxBookInPolicy
Get-CalendarProcessing $NewEquipmentMailbox | fl
Script für Geräte Postfächer

Diese kleinen Scripte lassen sich beispielsweise auf dem Exchange Server speichern und können bei Bedarf leicht angepasst und ausgeführt werden.

7 Gedanken zu „Exchange 2019: Ressourcenpostfächer mit PowerShell erstellen“

  1. Das letzte dargestellte Powershell Script des Artikels zum „Urlaubskalender Marketing“ hat in Zeile 4 einen Fehler:
    $NewEquipmentMailbox = New-Mailbox -Alias $EquipmentMailboxAlias -Name $EquipmentMailboxName -Room
    Es soll dem Text entsprechend -Equipment am Ende stehen, nicht -Room, oder?

    Antworten
  2. Das ist natürlich erst die Spitze des Eisbergs ;-)
    Allein mein Script zur Ressourcenerzeugung ist ca. 240 Zeilen lang und greift noch auf verschiedene andere Hilfsscripte zurück… Da wird die Ressource angelegt, dabei der Alias aus dem Namen abgeleitet, Gruppen für Vollzugriff und Buchungsberechtigung nach dem Schema – erzeugt und berechtigt und die Postfachsprache auf deutsch gestellt.
    Wer eine Exchange-Organisation mit mehr als einer Handvoll Postfächer betreut kommt an Powershell und maßgeschneiderten Scripten nicht vorbei :-) (Unsere gesamte (Git-)Exchange-Script-Fabrik umfasst derzeit ca 2MB, Tendenz weiter wachsend ;-) )

    Antworten
  3. Hallo Frank

    toller Artikel. Was ich noch nie fertig gebracht habe ist eine Room-Mailbox die, wenn per Mail mit aktiviertem „Privat“ gebucht, nur den zum Meeting eingeladenen Personen die Details wie Betreff und angehängte Dokumente zeigt wenn alle Mitarbeiter diesen Raum buchen können. Gibt es da eienen Kniff den ich übersehen habe?

    Gruss
    Romano

    Antworten
    • Ich würde das so lösen:

      1. Default-Kalenderrechte auf „Free/Buisy“ setzen
      2. den Usern mitteilen, dass bei der Raumbuchung das Flag „privat“ nicht mehr genutzt werden soll/darf

      Jetzt sollten eigentlich alle eingeladenen Personen in ihrem eigenen Kalender alle Details sehen können und im Raumkalender immer nur „belegt“ sichtbar sein.

      Peter

      Antworten

Schreibe einen Kommentar