Microsoft Exchange Scripting Agent Kalender
Below an example of my Exchange Scripting Agent.
With this configuration you can set various parameters after mailbox creation. I´ve tested various examples but this works great for me with an Microsoft Exchange Server 2016.
Step 1: Exchange Scripting Agent enabling –> Open Exchange Management Shell:
Enable-CmdletExtensionAgent "Scripting Agent"
Step 2: Create Exchange Scripting Configuration
On exchange program directory \Bin\CmdletExtensionAgents create a file named ScriptingAgentConfig.xml
Example: C:\Program Files\Microsoft\Exchange Server\V??\Bin\CmdletExtensionAgents\ScriptingAgentConfig.xml
Step 3: Configure/Create Config File (below mine with german description)
<?xml version="1.0" encoding="utf-8" ?>
<Configuration version="1.0">
<Feature Name="MailboxProvisioning" Cmdlets="New-Mailbox,Enable-Mailbox">
<ApiCall Name="OnComplete">
If($succeeded)
{
##################################################
### Version 2.0 by Wilhelm Holzgruber 06.02.2020 #
##################################################
### Pause sodass Mailbox erstellt werden kann und im AD repliziert wird
start-sleep -s 10
#
### Wir waehlen den ganzen AD Forest aus
Set-ADServerSettings -ViewEntireForest $true
#
### Es wird der Alias der erstellten Mailbox fuer die weitere Verarbeitung ausgewaehlt. Alternative waere auch Name oder Distinguished Name - funktioniert aber schlecht
$Mailbox = $provisioningHandler.UserSpecifiedParameters["Alias"]
#
### Wir setzen folgende Parameter: Sprache, Datumsformat, Uhrzeit und Foldername = Language - WICHTIG! Sprache muss vorher gesetzt sein um danach auf :\Kalender (nicht Calendar) zugreifen zu koennen
Set-MailboxRegionalConfiguration -Identity $Mailbox -Language "de-DE" -DateFormat "dd.MM.yyyy" -TimeFormat HH:mm -LocalizeDefaultFolderName
#
### Wir setzen die zusätzlichen Kalenderberechtigungen - WICHTIG ohne vorige Sprachsetzung gibt es weder Kalender noch Calendar
Add-MailboxFolderPermission -Identity $Mailbox$(':\Kalender') -User "John Smith" -AccessRights Reviewer
Add-MailboxFolderPermission -Identity $Mailbox$(':\Kalender') -User "EDIT-HumanResources" -AccessRights Editor
#
### POP3, IMAP und ActiveSync wird deaktiviert
Set-CASMailbox $Mailbox -ImapEnabled $false -POPEnabled $false -ActiveSyncEnabled $false
#
### Bei allen Gruppenpostfächern werden die Audit Settings gesetzt
foreach ($Mailbox in (Get-Mailbox -ResultSize Unlimited -Database Gruppe)) {Set-Mailbox -Identity "$($Mailbox.Name)" -AuditEnabled $true -AuditDelegate Update,Move,MoveToDeletedItems,SoftDelete,HardDelete,FolderBind,SendAs,SendOnBehalf,Create -AuditOwner Update,Move,MoveToDeletedItems,SoftDelete,HardDelete,Create -ErrorAction SilentlyContinue}
}
</ApiCall>
</Feature>
</Configuration>