Применимо к: Exchange Server 2010 SP1
Последнее изменение раздела: 2009-11-09
Для большинства общих задач достаточно выполнения одного или нескольких командлетов с использованием конвейера. Однако в некоторых случаях требуется автоматизировать выполнение задач. Командная консоль Exchange поддерживает многофункциональный язык создания сценариев, основанный на платформе Microsoft .NET Framework, который напоминает язык создания сценариев в других консолях. Командная консоль Exchange позволяет создавать простые и сложные сценарии. Поддерживаются языковые структуры для организации циклов, применения условий, управления потоком, а также присвоения значений переменным.
В каждой организации выполняются задачи, нужные только для этой организации. C помощью библиотеки файлов сценариев для выполнения таких задач администраторы могут экономить время и запускать эти сценарии на любом компьютере с установленной командной консолью Exchange.
Дополнительные сведения об использовании сценариев см. в документе Создание сценариев с использованием технологии Windows PowerShell (на английском языке). Так как командная консоль Exchange основана на технологии Microsoft Windows PowerShell, руководство по созданию сценариев в Windows PowerShell применимо и для командной консоли Exchange.
Выполнение сценария в командной консоли Exchange
Администраторы, знакомые со средой Cmd.exe, знают, как выполнять сценарии командной строки. Эти сценарии представляют собой простые текстовые файлы с расширением BAT. Как и пакетные файлы, файлы сценариев командной консоли Exchange можно создавать с помощью текстового редактора, например Блокнота. Записывать сценарии можно также с помощью интегрированной среды сценариев (ISE) Windows PowerShell.Интегрированная среда сценариев Windows PowerShell предоставляет расширенные функции редактирования и поддерживает отладку, выделение синтаксических конструкций цветом, выборочное выполнение и т. д. Файлы сценариев командной консоли Exchange имеют расширение PS1.
В командной консоли при вызове файлов сценариев
используется корневой каталог. По умолчанию корневой каталог имеет
путь <корневой диск>\Program Files\Microsoft\Exchange
Server\V14\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 The term 'Get-Date-Script-C.ps1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:22 + Get-Date-Script-C.ps1 <<<< + CategoryInfo : ObjectNotFound: (Get-Date-Script-C.ps1:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException |
В последнем примере, в котором тот же сценарий,
Get-Date-Script-C.ps1,
вызван без префикса «.\»,
показаны ожидаемые результаты.
Рекомендуется всегда давать файлам сценариев понятные имена и включать в сценарии комментарии с описанием назначения сценария и сложных для понимания моментов. Необходимо также указать некоторые сведения об авторе, чтобы пользователь сценария знал, у кого он может получить ответы на свои вопросы. Для обозначения строки комментария в коде сценария используется знак решетки (#).
Выполнение сценария в среде Cmd.exe
Чтобы выполнить сценарий по расписанию с помощью службы планировщика задач Windows, можно вызвать командную консоль Exchange и включить необходимый сценарий в качестве параметра. Чтобы использовать командлеты Exchange со сценарием, необходимо подключить Windows PowerShell напрямую к серверу под управлением Exchange и загрузить доступные командлеты Exchange. Это можно также выполнить автоматически с помощью ярлыка, используемого для открытия командной консоли Exchange. Чтобы выполнить сценарий, содержащий командлеты Exchange, необходимо напрямую подключить Windows PowerShell для выполнения сценариев, создающих данное подключение. Эта синтаксическая конструкция требуется для открытия Windows PowerShell, подключения к серверу Exchange и запуска сценария с помощью команды Cmd.exe.
Скопировать код | |
---|---|
PowerShell.exe -command ". 'D:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; <path to your script>" |
В этом примере показано, как запустить сценарий RetrieveMailboxes.ps1 из каталога C:\Мои сценарии.
Скопировать код | |
---|---|
PowerShell.exe -command ". 'D:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; C:\My Scripts\RetrieveMailboxes.ps1" |
Для получения дополнительных параметров, используемых при вызове командной консоли Exchange из среды Cmd.exe, введите команду PowerShell.exe /?.
Получение советов в консоли управления Exchange
В Microsoft Exchange Server 2010 с помощью консоли управления Exchange можно просматривать подробные сведения об определенных командах командной консоли, которые используются для выполнения некоторых задач.При запуске мастера в консоли управления Exchange этот мастер принимает введенные данные и создает команду командной консоли Exchange, которая затем выполняется компьютером.Можно скопировать эту команду и вставить ее непосредственно в командную консоль Exchange или скопировать ее в текстовый редактор и изменить. После изучения процедуры создания команд в консоли управления Exchange пользователь получит представление о том, как создавать или изменять эти команды в соответствии с потребностями организации.
Например, при создании почтового ящика для пользователя Сергея Озерова на странице Завершение мастера создания почтового ящика отображаются следующие сведения.
Сведения на странице Завершение дают представление о том, какие данные необходимо предоставить, чтобы обеспечить успешное выполнение аналогичной команды в командной консоли Exchange. На странице Завершение нажмите сочетание клавиш CTRL+C, чтобы скопировать эти сведения в буфер обмена. Затем их можно вставить в текстовый редактор, изучить команду и определить, что необходимо изменить, чтобы добавить новые почтовые ящики. Кроме того, можно настроить эту команду для ее использования в качестве части сценария, который принимает CSV-файл или другой источник входных данных и автоматически создает различные почтовые ящики.
Помимо страницы Завершение, консоль управления Exchange позволяет также просматривать журнал команд командной консоли Exchange, в котором регистрируется каждая выполняемая в консоли управления Exchange команда (если журнал включен).Выходные данные этого журнала можно сохранять для дальнейшего изучения команд, которые используются в консоли управления Exchange при получении и сохранении сведений.Дополнительные сведения см. в разделе Использование журнала команд командной консоли Exchange для отслеживания задач, выполняемых в консоли управления Exchange.
Проверка сценариев
При создании сценариев необходимо всегда проверять их в тестовой среде перед применением в рабочей среде. При проверке сценариев в лаборатории и их развертывании в рабочей среде можно проверить правильность выполнения сценария с помощью параметра WhatIf, который доступен для многих командлетов в командной консоли Exchange.Параметр WhatIf начинает выполнение команды, к которой он применен, только для демонстрации того, какие объекты будут задействованы при выполнении команды и какие изменения произойдут в этих объектах. При этом сами объекты фактически не изменяются.
Дополнительные сведения о параметре WhatIf см. в разделе Параметры WhatIf, Confirm и ValidateOnly.
Устранение неполадок в сценариях
Действие сценария может отличаться от ожидаемого по многим причинам. Иногда трудно определить, в чем состоит проблема и что сделано неправильно. Командная консоль Exchange позволяет находить общие синтаксические ошибки благодаря тому, что в отчете отображается строка и символ в точке сбоя. Если сценарий имеет верный синтаксис, однако его поведение отличается от ожидаемого, выявить проблему намного труднее. Командная консоль Exchange имеет простые функции отладки, которые позволяют устранять неполадки путем изучения каждого шага, выполняемого сценарием. Эта функция называется трассировкой.
Чтобы включить трассировку для изучения каждого шага
команды в сценарии, используйте командлет Set-PSDebug с
параметром Trace, для которого установлено значение
1
. Чтобы проверить каждый шаг и каждое присвоение
значения переменной, укажите для параметра Trace значение
2
. Чтобы отключить трассировку, укажите для параметра
Trace значение 0
(нуль).
Чтобы построчно проверить команды в сценарии, используйте командлет Set-PSDebug с параметром 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, чтобы возобновить работу сценария. Процесс управления
немедленно вернется в точку приостановки выполнения сценария.