Set Outlook Calendar default permissions with Exchange Scripting Agent

Hallo zusammen,

Ich will nach dem erstellen der Mailbox automatisch die default Kalender Permission auf "Reviewer" setzen. Dazu habe ich den Scripting Agent verwendet:

Grundlagen:

Also erst mal die Grundlagen erarbeiten. Mit dem folgenden Befehl kann man die MAPI Kalender Berechtigungen anzeigen (Achtung der Kalender Ordner kann je nach Spracheinstellung anders heissen)

Get-MailboxFolderPermission boa:\Kalender

Mit dem folgenden Befehl kann ich die "Default Permission" auf "Reviewer" setzen

Set-MailboxFolderPermission boa:\Kalender -User default -AccessRights Reviewer
Get-MailboxFolderPermission boa:\Kalender

Nun schauen wir mal nach, ob der Scripting Agent aktiviert ist

Get-CmdletExtensionAgent | fl name, enabled

Mit den folgenden Befehlen kann man den "Scripting Agent" aktivieren oder deaktivieren

Enable-CmdletExtensionAgent "Scripting Agent"
Disable-CmdletExtensionAgent "Scripting Agent"
Get-CmdletExtensionAgent | fl name, enabled

Im folgenden Pfad C:\Program Files\Microsoft\Exchange Server\V14\Bin\CmdletExtensionAgents wird nach der Datei "ScriptingAgentConfig.xml" gesucht. Es ist bereits eine Sample Datei vorhanden, mit der man eine Automatisierung bauen kann.

Meine Automatisierung soll also nach dem erstellen der Mailbox mit "New-Mailbox" oder "Enable-Mailbox" die Permission auf dem Kalender setzen.

Hier das Script zum runterkopieren:

<?xml version="1.0" encoding="utf-8" ?>
<Configuration version="1.0">
<Feature Name="MailboxProvisioning" Cmdlets="new-mailbox,enable-mailbox">
<ApiCall Name="OnComplete">
 if($succeeded)
 {
  $newmailboxes = $provisioningHandler.UserSpecifiedParameters["Name"]

  $Mailboxes = Get-mailbox $newmailbox
  ForEach ($Mailbox in $Mailboxes)
  {
   $cal = Get-MailboxFolderStatistics -Identity $Mailbox.Alias | where {$_.foldertype -eq "Calendar"}
   $Calpath = $Mailbox.Alias + ":" + $cal.FolderPath.replace("/","\")
   Set-MailboxFolderPermission $calpath -User default -AccessRights Reviewer
  }
 }
</ApiCall>
</Feature>
</Configuration>

Achtung: Stimmt etwas nicht im XML File, kann man bereits beim starten der Exchange Management Konsole eine Fehlermeldung erhalten (Scripting Agent initialization failed)

Nun testen wir das Script mit "New-Mailbox"

Funktioniert wunderbar

Nun testen wir das Script mit "Enable-Mailbox". Da können ja auch mehrere Mailboxen gleichzeitig enabled werden.

Funktioniert ebenfalls

Grüsse
Andres Bohren