Для большинства общих задач достаточно выполнения одного или нескольких командлетов с использованием конвейера. Однако в некоторых случаях требуется автоматизировать выполнение задач. Командная консоль Exchange поддерживает многофункциональный язык создания сценариев, основанный на Microsoft .NET Framework, который напоминает язык создания сценариев в других средах. Командная консоль Exchange позволяет администратору создавать различные сценарии, от самых простых до самых сложных. Поддерживаются языковые структуры для организации цикла, применения условий, управления потоком выполнения, а также присваивания значений переменным.

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

Дополнительные сведения об использовании сценариев см. в документе Создание сценариев с использованием технологии Windows PowerShell (на английском языке). Поскольку командная консоль Exchange основана на технологии Microsoft Windows PowerShell, руководство по созданию сценариев в Windows PowerShell применимо и для командной консоли Exchange.

Выполнение сценария в командной консоли Exchange

Администраторы, знакомые со средой Cmd.exe, знают, как выполнять сценарии командной строки. Эти сценарии представляют собой просто текстовые файлы с расширением BAT. Как и файлы пакетной обработки, файлы сценариев командной консоли Exchange можно создавать с помощью блокнота или другого текстового редактора. Файлы сценариев командной консоли Exchange имеют расширение PS1.

Командная консоль Exchange использует корневой каталог при вызове файлов сценариев. По умолчанию данный корневой каталог — это каталог <root drive>:\Program Files\Microsoft\Exchange Server\bin. Можно также проверить каталог PSHome на любом компьютере с командной консолью Exchange, выполнив команду $PSHome из командной строки. Оба этих каталога включены в переменную среды PATH.

Если файл сценария сохранен в корневом каталоге, его можно вызвать с использованием имени сценария. Если файл сценария находится не в текущем местоположении, необходимо указать путь к сценарию и его имя. Если файл сценария находится в текущем местоположении, имени сценария должен предшествовать префикс .\.

В следующих ниже примерах показан синтаксис команд вызова трех разных сценариев. Во всех примерах используется командлет Get-Date, находящийся в трех разных местоположениях.

Копировать код
[PS] C:\>Get-Date-Script-A.ps1
Friday, January 20, 2006 3:13:01 PM

Файл сценария Get-Date-Script-A.ps1 находится в каталоге, заданном с использованием $PSHhome, для его выполнения нужно указать только имя этого сценария.

Копировать код
[PS] C:\>c:\workingfolder\Get-Date-Script-B.ps1
Friday, January 20, 2006 3:13:25 PM

Файл сценария Get-Date-Script-B.ps1 находится в каталоге C:\workingfolder, поэтому для его выполнения необходимо указать полный путь к данному файлу.

Копировать код
[PS] C:\>.\Get-Date-Script-C.ps1
Friday, January 20, 2006 3:13:40 PM

Файл сценария Get-Date-Script-C.ps1 находится в текущем местоположении, C:\. Поэтому перед именем этого файла нужно поставить префикс .\.

Копировать код
[PS] C:\>Get-Date-Script-C.ps1
'Get-Date-Script-C.ps1' is not recognized as a Cmdlet, function, operable program, or script file.
At line:1 char:21
+ Get-Date-Script-C.ps1 <<<<

В последнем примере, где тот же сценарий Get-Date-Script-C.ps1, вызван без префикса .\, показаны ожидаемые результаты.

Рекомендуется всегда давать файлам сценариев понятные имена и включать в сценарии комментарии с описанием назначения сценария и сложных для понимания моментов. Следует также указать некоторые сведения об авторе, чтобы пользователь сценария знал, у кого он может получить ответы на свои вопросы. Для обозначения строки комментария в коде сценария используется знак решетки (#).

Выполнение сценария в среде Cmd.exe

Если требуется выполнять сценарий по расписанию с помощью службы планировщика задач Windows, можно вызвать командную консоль Exchange и включить требуемый сценарий в качестве параметра. Так как командная консоль Exchange представляет собой оснастку Windows PowerShell, при выполнении данной команды необходимо также загрузить оснастку командной консоли Exchange, чтобы выполнять командлеты Exchange. Для загрузки оснастки командной консоли Exchange и выполнения сценария в среде Cmd.exe используется следующий синтаксис:

Копировать код
PowerShell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\Bin\ExShell.Mcf1" -Command ". '<Path to Your Script>'"

Например, чтобы выполнить сценарий RetrieveMailboxes.ps1 из C:\My Scripts, выполните следующую команду:

Копировать код
PowerShell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\Bin\ExShell.Mcf1" -Command ". 'C:\My Scripts\RetrieveMailboxes.ps1'"

Для получения сведений о дополнительных параметрах, используемых при вызове командной консоли Exchange из среды Cmd.exe, выполните команду PowerShell.exe /?

Получение советов в консоли управления Exchange

В Microsoft Exchange Server 2007 с помощью консоли управления Exchange можно просматривать подробные сведения о конкретных командах командной консоли Exchange, которые используются для выполнения определенных задач. При выполнении мастера в консоли управления Exchange этот мастер принимает введенные сведения и создает команду командной консоли Exchange, которая затем выполняется компьютером. Можно скопировать данную команду и вставить ее непосредственно в командную консоль Exchange или скопировать ее в текстовый редактор и изменить. Изучив процедуру создания команд в консоли управления Exchange, вы получите представление о том, как создавать или изменять эти команды для удовлетворения будущих потребностей.

Например, при создании почтового ящика для сотрудника Frank Lee (Фрэнк Ли) на странице Завершение мастера создания почтовых ящиков выводятся следующие сведения:


Страница завершения создания почтовых ящиков

Сведения на странице Завершение дают представление о том, какие данные следует предоставить, чтобы обеспечить успешное выполнение аналогичной команды в командной консоли Exchange. Нажмите клавиши CTRL+C на странице Завершение, чтобы скопировать эти сведения в буфер обмена. Затем их можно вставить в текстовый редактор, изучить команду и определить, что необходимо изменить, чтобы добавить новые почтовые ящики. Кроме того, можно настроить эту команду таким образом, чтобы ее можно было использовать как часть сценария, который принимает CSV-файл или другой источник входных данных и автоматически создает большое число ящиков.

Проверка сценариев

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

Дополнительные сведения о параметре WhatIf см. в разделе Параметры WhatIf, Confirm и ValidateOnly.

Устранение неполадок в сценариях

Действие сценария может отличаться от ожидаемого по многим причинам. Иногда трудно определить, в чем состоит проблема и что сделано неправильно. Командная консоль Exchange позволяет находить общие синтаксические ошибки, сообщая строку и знак в точке сбоя. Если сценарий имеет верный синтаксис, однако его поведение отличается от ожидаемого, выявить проблему намного труднее. Командная консоль Exchange имеет простые функции отладки, которые позволяют устранять ошибки путем изучения каждого действия, выполняемого сценарием. Это называется трассировкой.

Чтобы включить трассировку для изучения каждого действия сценария, воспользуйтесь командлетом Set-PSDebug с параметром Trace, для которого задано значение 1. Чтобы проверять каждое действие и изменение значений переменных, задайте для параметра Trace значение 2. Чтобы отключить трассировку, задайте для параметра Trace значение 0 (ноль).

Чтобы построчно проверить команды, воспользуйтесь командлетом Set-PSDebug с параметром Step. Каждое действие будет завершаться выводом запроса на подтверждение дальнейшего выполнения операции. В режиме Step доступны следующие параметры:

Копировать код
[Y] Yes (continue to the next step)
[A] Yes to All (continue to the end of the script)
[N] No (stop this step)
[L] No to All (stop all remaining steps)
[S] Suspend (suspend at this point and drop to a prompt)

Suspend позволяет выйти в командную строку, где можно выполнить любую команду, например, проверить или задать значения для объекта до того как к нему получит доступ сценарий. Если все необходимые действия выполнены, чтобы возобновить работу сценария, введите Exit, после чего управление незамедлительно вернется в точку приостановки выполнения сценария.



Рисунок 1. Страница «Завершение» мастера создания почтовых ящиков