headermask image

Автоматизируем рутинные задачи с помощью агента сценариев Exchange 2010

Агенты расширения командлетов – это новый компонент Exchange 2010, который активируется в момент выполнения определенного командлета. С помощью них можно расширить функциональность Exchange 2010 фоновым запуском дополнительных команд или скриптов. Одним из семи агентов является агент сценариев, который по умолчанию отключен. В данной статье мы рассмотрим пример его использования.

Командлет Get-CmdletExtensionAgent покажет нам все 7 агентов. Запустите команду Get-CmdletExtensionAgent | ft name, priority, enabled –wrap –autosize .

cmdletextensionagents_1

Рассмотрим следующую задачу. Мы хотим чтобы каждый раз после создания нового почтового ящика для него автоматически устанавливались определенные настройки.

  • POP, IMAP, ActiveSync отключаем
  • Outlook Anywhere отключаем
  • Single Item Recovery включаем
  • Автоматически заполняем поля Country, City, Street Address, Company.
  • Блокируем использование Outlook в онлайн режиме
  • Устанавливаем OWA Mailbox Policy

После включения агент сценариев использует файл “ScriptingAgentConfig.xml”, который находится в директории \Bin\CmdletExtensionAgents. По умолчанию в этой директории расположен файл “ScriptingAgentConfig.xml.sample” который дает нам пример использования синтаксиса.

cmdletextensionagents_2

Ниже показано содержание данного файла:


<?xml version="1.0" encoding="utf-8" ?>
  <Configuration version="1.0">

<Feature Name="Name" Cmdlets="cmdlets">
          <ApiCall Name="OnComplete">                 if($succeeded)

            {                PowerShell cmdlets            }

        </ApiCall>
      </Feature>

</Configuration>

Для решения поставленной перед нами задачи модифицируем файл следующим образом.


<?xml version="1.0" encoding="utf-8" ?>
  <Configuration version="1.0">  

    <Feature Name="MailboxProvisioning" Cmdlets="new-mailbox">
          <ApiCall Name="OnComplete">

            if($succeeded)

            {

                $mailbox = $provisioningHandler.UserSpecifiedParameters["Alias"]

                Set-CASMailbox $mailbox -ImapEnabled $false -POPEnabled $false –ActiveSyncEnabled $false –OWAMailboxPolicy "HEW OWA Policy” –MAPIBlockOutlookRpcHTTP $true –MAPIBlockOutlookNonCachedMode $true

         Set-User -City 'London' -CountryOrRegion 'United Kingdom'  -Company 'How Exchange  Works' -Identity $mailbox

                Set-Mailbox $mailbox -SingleItemRecoveryEnabled $true
                              }

        </ApiCall>
      </Feature>      </Configuration>

Строка <Feature Name=”MailboxProvisioning” Cmdlets=”new-mailbox,enable-mailbox”> означает, что мы хотим чтобы наш код запускался после любого успешного запуска командлетов new-mailbox или enable-mailbox. После запуска данных командлетов через шелл, консоль или стороннее приложение агент сценариев запускает указанные нами команды. В самом начале мы сохраняем алиас пользователя в переменную $mailbox для использования в коде.

Я сохранил приведенный код в файл ScriptingAgentConfig.xml в директории \Bin\CmdletExtensionAgents folder.

cmdletextensionagents_3

Следующим шагов является включение агента сценариев. Агент должен быть включен только после создания файла ScriptingAgentConfig.xml. Выполните команду Enable-CmdletExtensionAgent “Scripting Agent” для включения агента.

cmdletextensionagents_4

Настало время для проверки! Я создал тестовый ящик и проверил что агент сценариев установил все необходимые для него опции.

cmdletextensionagents_5

cmdletextensionagents_6

Надеюсь данная статья поможет вам понять предназначение агента сценариев и вы начнете использовать эту замечательную возможность в вашей организации

 

 

Полезная информация

Моя жена ярая любительница чая и недавно сделал ей подарок, который она давно хотела – купил самовар угольный из Тулы. Хорошо, что в наше время все можно сделать по интеренету не выходя из дома.

Отличный сайт, где парфюмерию от serge lutens купить легко и просто. Причем цены явно без накруток и доступны всем.

vtoroy

One Comment

  1. вопрос: xml физически располагается на конкретном сервере, серверов к примеру 4 (2 CAS+HUB, 2MBX) – на каком из серверов править xml, и что произойдет, если на серверах разместить разные xml?

    1. Виктор Мусатов on June 30th, 2011 at 11:20 am