Jedną z ciekawych i ciągle mało znanych funkcjonalności w Exchange 2013 (chociaż pojawiła się już w Exchange 2010) jest możliwość wykorzystania agenta skryptowego do realizowania dodatkowych akcji po wykonaniu standardowego cmdleta Exchange. Przykładem może być operacja tworzenia skrzynki Exchange – enable-mailbox lub new-mailbox nie posiadają opcji pozwalających np. na ustawienie domyślnego języka i strefy czasowej. Przypomniał o tym ostatnio Tony Redmond na swoim blogu. Podobnie w przypadku włączenia funkcjonalności SingleItemRecovery lub audytowania musimy wykonać dodatkowe operacje. Automatyzację konfiguracji tych parametrów umożliwia nam dodatek Cmdlet Extension Agents, a tak naprawdę to jeden z 8 agentów – Scripting Agent:
Jak możemy go użyć?
W katalogu instalacyjnym Exchange, w podkatalogu Bin\CmdletExtensionAgent znajdują się niezbędne rozszerzenia oraz przykład pliku konfiguracyjnego jak widać na poniższym rysunku:
Tworząc plik konfiguracyjny (obowiązkowa nazwa ScriptingAgentConfig.xml)definiujemy w nim, dla jakich komend wykonywane są dodatkowe operacje i jakie są warunki początkowe. W przypadku uzupełnienia operacji tworzenia skrzynki w pliku xml dodajemy sekcję dla odpowiednich komend i uzależniamy wykonanie sekwencji dodatkowych czynności od poprawności wykonania komendy podstawowej (weryfikując rezultat zwrócony przez metodę “OnComplete”). Oczywiście możemy dodać więcej operacji. Poniższy plik opisuje operację ustawienia polskiej wersji językowej, godziny rozpoczęcia pracy w firmie, polskiej strefy czasowej. Włączone zostaje również SingleItemRecovery oraz audytowanie operacji na skrzynce (tylko administrator i delegaci, żeby włączyć audytowanie dla właściciela należy dodatkowo zdefiniować, jakie operacje są rejestrowane).
<?xml version="1.0" encoding="utf-8" ?>
<Configuration version="1.0">
<Feature Name="Mailboxes" Cmdlets="New-Mailbox, Enable-Mailbox">
<ApiCall Name="OnComplete">
if($succeeded) {
$Name= $ProvisioningHandler.UserSpecifiedParameters["Name"]
Set-Mailbox $Name -Languages "pl-PL"
Set-MailboxRegionalConfiguration $Name -DateFormat "yyyy-MM-dd" -TimeZone "Central European Standard Time"
Set-MailboxCalendarConfiguration $Name -WorkingHoursStartTime "09:00:00"
Set-Mailbox $Name -SingleItemRecoveryEnabled $true
Set-Mailbox $Name -AuditEnabled $true
}
</ApiCall>
</Feature>
</Configuration>
Plik musi znajdować się na wszystkich serwerach z rolą Mailbox. W ten sposób, jeżeli nie popełniliśmy błędu dla każdej nowo tworzonej skrzynki, zostaną ustawione parametry pokazane powyżej, niezależnie czy będzie ona tworzona z poziomu Exchange Management Shella czy konsoli webowej.
Oczywiście musimy najpierw włączyć agenta komendą:
Enable-CmdletExtensionAgent “Scripting Agent”