Ранее я уже описывал использование сценариев оболочки Exchange Management Shell для автоматизации управления Exchange Server 2007. На этот раз мы рассмотрим такие аспекты, как настройка Exchange Management Shell и важность выбора области для обработки требуемых данных.

Персональная оболочка PowerShell

При установке Exchange 2007 на сервере (или компонентов управления на рабочей станции Windows XP) оболочка Exchange Management Shell размещается в меню Start. При запуске оболочки управления сценарий PowerShell, Exchange.ps1 вызывается из каталога двоичных файлов Exchange. Exchange.ps1 использует команду Add-PSSnapin для загрузки оснастки Exchange, в которой содержатся специфические команды для объектов Exchange, таких как почтовые ящики, серверы и общие папки. После того как будет загружена оснастка, команды в Exchange.ps1 определяют используемые оболочкой переменные. Например, переменная $ExBin указывает на каталог с двоичными файлами Exchange, а $ExScripts — на каталог сценариев Exchange. Также определяется переменная $AdminSessionADSettings (о ней чуть позже). Это глобальные переменные: их можно использовать в любом месте в сеансе PowerShell.

После инициализации всех объектов оболочка PowerShell выдает командное окно для работы с Exchange. Как показано на экране 1, пользователь может настроить шрифт, структуру и цвета командного окна Exchange Management Shell с помощью списка свойств оболочки. Например, можно поменять шрифт на более крупный.

Экран 1. Настройка окна командой строки с помощью списка свойств

В дополнение к переменным, определенным в Exchange.ps1, можно определить другие переменные в личном профиле PowerShell. Windows не создает профиль автоматически; пользователю необходимо подготовить файл с именем Microsoft.PowerShell_profile.ps1 с помощью редактора (например, Notepad) и сохранить его в каталоге My DocumentsWindowsPowerShell. Информация об использовании профилей PowerShell размещена по адресу http://www.leeholmes.com/blog/TheStoryBehindTheNamingAndLocationOfPowerShellProfiles.aspx . Можно определить любые необходимые переменные и вставить другие команды, чтобы персонализировать рабочую среду. Созданный профиль можно отредактировать из оболочки Exchange Management Shell с помощью команды

Invoke-Item $Profile

Чтобы изменения в оболочке вступили в силу, требуется перезапустить оболочку. На экране 2 показан пример профиля, а на экране 3 можно увидеть представление профиля в оболочке. В Internet опубликовано множество других настроек, применяемых к персональным профилям. Например, с их помощью можно назначить новые псевдонимы для быстрого вызова команд или видоизменить командное приглашение. Обратите внимание, что PowerShell в первую очередь обрабатывает профиль, а затем выполняет команды Exchange.ps1. Важно, чтобы в профиле не было переменных, которые затем могут быть перезаписаны командами Exchange.ps1.

 Экран 2. Пример персонального профиля для PowerShell

Экран 3. Следствия применения персонального профиля

Определение областей

Глобальная переменная $Admin SessionADSettings, устанавливаемая в Exchange.ps1, определяет область поиска Active Directory (AD) в сеансе Exchange Management Shell. По умолчанию область для запросов, направляемых в AD, представляет собой домен сервера или рабочей станции, на которой функционирует оболочка. В лесу с несколькими доменами любой запрос возвращает объекты только из локального домена.

Например, пусть в корневом домене леса имеется три дочерних домена для поддержки учетных записей с именами South, West и East. В каждом региональном домене установлены серверы Exchange, и атрибут Custom Attribute 15 указывает регион, к которому принадлежат почтовые ящики. Если выполнить команду

Get-Mailbox -Filter `
{CustomAttribute15 -eq «West»} | `
Select Name

можно предположить, что по результатам поиска во всем лесе будет сформирован список почтовых ящиков, принадлежащих к региону West. Но в действительности будут обнаружены только почтовые ящики локального домена, у которых в атрибуте Custom Attribute 15 значится West, так как область поиска в AD по умолчанию не распространяется за пределы локального домена. Возможность путаницы очевидна.

При инициализации оболочки Exchange Management Shell область устанавливается свойством ViewEntireForest глобальной переменной $AdminSessionADSettings. Изменим свойство ViewEntireForest, можно расширить область поиска на весь лес:

AdminSessionADSettings.ViewEntireForest
= $True

Чтобы сузить круг поиска объектов до локального домена, введите

AdminSessionADSettings.ViewEntireForest
= $False

Изменения можно вносить интерактивно через оболочку или дополнив профиль соответствующим кодом. Первый вариант предпочтителен, если нужно сделать одноразовую замену; при работе с несколькими доменами лучше использовать профиль.

Определение оптимальной области поиска — важнейшее условие, чтобы извлечь нужные данные о почтовых ящиках. Неверно выбранная область может стать причиной различных неприятностей. Например, команда Update-SafeList собирает сведения из безопасных списков учетных записей пользователей и объединяет данные, чтобы Exchange синхронизировал их с сервером Edge Transport. Агенты антиспама на сервере Edge могут затем использовать данные объединенных списков пользователей, чтобы избежать блокировки полезных сообщений. Если применить команду в неверно выбранной области, будут собраны данные только из доменов, попавших в область, и данные на сервере Edge будут неполными.

Чтобы не распространять область на весь лес, следует использовать для запроса сервер Global Catalog (GC) в удаленном домене. Например, если GC входит в домен South, то можно проверить существование почтовых ящиков West в этом домене с помощью команды

Get-Mailbox -DomainController `
GC01.South.MyOrg.Com `
–Filter {CustomAttribute15 `
–eq «West»} | Select Name

Изменение области запросов AD отразится на работе с оболочкой Exchange Management Shell. При назначении области, охватывающей весь лес, приходится дольше ждать выполнения любой команды, но в большинстве случаев ожидание оправданно, так как администратор получает полную картину и не рискует упустить из виду важные данные. Чтобы сэкономить время, необходимо использовать параметры для выделения конкретных групп объектов, например указать почтовые ящики на определенном сервере.

Назначая область, охватывающую весь лес, важно формировать эффективные запросы, и в этом могут помочь фильтры. В следующей статье о PowerShell для администраторов Exchange речь пойдет о фильтрах и пакетном выполнении.


Тони Редмонд (exchguru@windowitpro.com ) — редактор журнала Windows IT Pro, старший технический редактор Exchange & Outlook Administrator, вице-президент и главный технолог HP Services