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:
- Understanding Cmdlet Extension Agents
http://technet.microsoft.com/en-us/library/dd335067.aspx - Get-MailboxFolderPermission
http://technet.microsoft.com/de-de/library/dd335061(v=exchg.150).aspx
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