Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть 1: управление копиями публичных папок и клиентскими разрешениями.
Введение
В предыдущей части мы рассмотрели встроенные сценарии для управления публичной папкой (Public Folder). Мы узнали, что все стандартные сценарии Exchange расположены в папке сценариев в директории, куда установлен сервер Exchange Server.
В этой части мы рассмотрим некоторые сценарии, позволяющие администраторам получать отчеты агентов антиспама, а также некоторые дополнительные сценарии, с помощью которых администраторы смогут создавать более удобные отчеты.
Генерирование результатов HTML в Exchange Management Shell ‘
Прежде всего давайте воспользуемся PowerShell Scriptacular, который представляет собой набор полезных скриптов, используемых в PowerShell, а также в Exchange Management Console. Этот набор сценариев был разработан Вивеком Шарма и Махай Джалобенау во время их работы над оболочкой Exchange Management Shell.
Для загрузки этого пакета посетите сайт viveksharma.com: techlog, с которого можно скачать самую последнюю версию. Текущая версия Scriptacular содержит следующие сценарии:
-
Addfakeservers.ps1
-
removefakeservers.ps1
-
balancemailboxes.ps1
-
generate.ps1
-
cleanup.ps1
-
initvars.ps1
-
mailstorm.ps1
-
mailstorm2.ps1
-
multi-matrix.ps1
-
out-email.ps1
-
out-html.ps1
-
out-ie.ps1
Чтобы установить Scriptacular, просто скачайте архивный zip файл с веб сайта и извлеките его содержимое в папку сценариев в директорию установки Exchange Server 2007. Если вы устанавливали Exchange Server, используя параметры по умолчанию, то нужно выбрать следующий путь c:\program files\Microsoft\Exchange Server\Scripts folder.
В этой статье мы будем работать с последними двумя сценариями списка, коими являются out-html.ps1 и out-ie.ps1. Оба сценария можно использовать с дополнительными параметром | (pipe) в конце любой команды PowerShell, первый генерирует результаты в формате HTML, а второй берет эти результаты и отображает их в сеансе обозревателя Internet Explorer.
Теперь, когда мы знаем, как устанавливать утилиту и с какими сценариями мы будем работать, давайте рассмотрим их использование. Допустим, мы создаем ежедневный отчет статистики наших почтовых ящиков и выполняем команды Get-MailboxStatistics | select DisplayName,ItemCount| Export-csv c:\report.csv. Теперь давайте усовершенствуем формат результатов с помощью Scriptacular путем простого добавления следующих дополнительных команд:
Get-MailboxStatistics | select DisplayName,ItemCount| out-html | out-ie
Теперь вы можете сравнить оба полученных результата, которые показаны на рисунках 01 и 02.


Мы можем пойти немного дальше и создать сценарий для генерирования отчетов html с помощью скрипта, который мы только что видели. Следующие три строки могут быть сохранены в формате .ps1, после чего файл можно выполнять ежедневно, в результате у вас будет имя файла, содержащее месяц и день выполнения, содержимое этого файла будет представлять собой результаты команды Get-MailboxStatistics.
$VarDay = (Get-Date).day
$VarMonth = (Get-Date).month
Get-MailboxStatistics | out-html | out-file c:\reports\MailboxStatistics-$VarMonth-$VarDay.html
Создание отчетов использования агента антиспама’
Прежде чем вдаваться в подробности использования встроенных сценариев для агентов антиспама, нам нужно понять, как агенты транспортировки записывают свои действия в Exchange Server 2007. Все операции, выполняемые некоторыми агентами антиспама, записываются в текстовые файлы в директории AgentLog, которая находится в каталоге
Содержимое папки AgentLog представляет собой множество логов в режиме круговой записи, что означает, что когда логи достигают ограничения своего срока существования в 30 дней или размера 250MB (независимо от того, какой предел будет достигнут в первую очередь) они будут автоматически удалены. Генерируются они по дням или по 10MB, независимо от того, какое значение будет достигнуто в первую очередь. Администратор Exchange может включить или выключить файлы AgentLog, однако невозможно настроить путь, возрастной предел, максимальный индивидуальный размер и максимальный размер директории. Лог каждого агента содержит следующую информацию:
-
Временную пометку (Timestamp)
-
Идентификатор сеанса (SessionId)
-
Локальная конечная точка (LocalEndpoint)
-
Удаленная конечная точка (RemoteEndpoint)
-
EnteredOrgFromIP
-
Идентификатор сообщения (MessageId)
-
P1FromAddress
-
P2FromAddresses
-
Получатель (Recipient)
-
NumRecipients
-
Агент (Agent)
-
Событие (Event)
-
Действие (Action)
-
Smtp ответ
-
Причина
-
Данные причины
-
Диагностика
Можно воспользоваться блокнотом, чтобы открыть логи (рисунок 03) и прочитать всю информацию, содержащуюся в них, а можно воспользоваться Excel, чтобы разделить содержимое на разные столбцы.

Есть и другой способ прочтения и сортировки информации этих файлов, коим является использование команды Get-Agentlog (рисунок 04). Команда отобразит ту же информацию, только более удобным способом. Можно более подробно рассмотреть результаты команды get-AgentLog, а также проверить, кто отправлял сообщение, кто должен был его получить, предпринятое действие, SMTP ответ и причину, по которой сообщение не было доставлено.

Итак, теперь, когда мы знаем, как агенты антиспама записывают информацию и как использовать out-html и out-ie команды, мы можем добавить один или более элементов в нашу смесь: скрипт антиспама, который генерирует некоторые отчеты о деятельности агентов антиспама .
Следующие сценарии можно использовать для сбора информации из Agentlog:
SCL Histogram: Мы можем получить информацию, записанную агентом фильтрации содержимого и сгруппировать ее значением SCL. Чтобы сортировать результаты, можно воспользоваться следующей командой (рисунок 05)
.\get-antispamSCLHistogram.ps1 | sort-object Name

Top Blocked Sender Domains: Перечисляет первые N доменов отправителей, которые были заблокированы агентами транспортировки, нам также нужно указать, будет ли эта информация идти с p1 или p2, где информация P1 идет с конверта сообщения (из поля заголовка), а p2 идет с заголовка сообщения (из поля заголовка). Можно использовать следующую команду, как показано на рисунке 06.
.\get-AntispamTopBlockedSenderDomains.ps1 p1

Отчет фильтрации (Filtering Report): этот сценарий позволяет администратору просматривать, какие агенты отвечают за нижеуказанные опции:
-
Сообщение отклонено (MessagesRejected)
-
Сообщение удалено (MessagesDeleted)
-
Сообщение помещено в карантин (MessagesQuarantined)
-
Подключения (Connections)
-
Команды (Commands)
К примеру, давайте воспользуемся следующей командой, чтобы получить список агентов, отклоняющих сообщения, как показано на рисунке 07.
.\get-AntispamFilteringReport.ps1 messagesrejected
Теперь мы знаем, что фильтр содержимого стал причиной блокирования 546 сообщений в нашей организации.

Top Blocked Sender IP: используя этот сценарий, мы можем просматривать первых N (количество) заблокированных IP отправителей, мы можем воспользоваться параметром ‘top и указать, сколько записей хотим получить в результатах сценария, в следующем сценарии (рисунок 08) мы просматриваем первые 20 IP адресов, которые были блокированы нашими агентами антиспама:
.\Get-AntispamTopBlockedSenderIPs.ps1 -top 20

Первые заблокированные отправители (Top Blocked Senders): этот сценарий отображает список первых N заблокированных отправителей, нам также нужно указать, хотим ли мы получить информацию из p1 или p2 поля, рисунок 09.
.\get-AntispamTopBlockedSenders.ps1 p1

Top RBL Providers: отобразит список первых N поставщиков актуальных черных списков, стандартное значение составляет 10, что не применимо в данной среде, так как я использую лишь 2 RBLs, как показано на рисунке 10.
.\Get-AntiSpamTopRBLProviders.ps1

Первые получатели (Top Recipients): этот сценарий отображает первых N получателей, которые были блокированы агентами антиспама. Для получения этого списка используется следующая команда, как показано на рисунке 11.
.\Get-AntispamTopRecipients.ps1

Подтверждение установки Exchange Server
Есть также сценарий, который улучшает возможность прочтения логов Exchange Setup Logs. Во время процесса установки мастер создает папку под названием C:\ExchangeSetupLogs и добавляет туда массу информации, которая обрабатывается в фоновом режиме в файл ExchangeSetup.log. Мы можем посмотреть этот файл с помощью любого текстового редактора, так как это простой текстовый файл, однако мы можем использовать GetSetupLogs.ps1 для просмотра этой информации. Разница заключается в том, что сценарий показывает предупреждения и критические ошибки различными цветами, что может помочь вам обнаружить и исправить проблемы при диагностике.
Для подтверждения лога установки с помощью встроенного сценария просто выполните .\Get-SetupLog.ps1 из папки Scripts, как показано на рисунке 12.

В этой команде можно использовать такие параметры, как:
- tree: результат будет отображен в виде древа
- error: будет отображены только ошибки и предупреждения
Заключение
В этой статье мы посмотрели, как встроенные скрипты собирают информацию из agentlog для создания некоторых отчетов, мы также рассмотрели, как использовать пакет Scriptacular для просмотра html и Internet Explorer результатов из сеанса PowerShell.
Наконец, мы можем сочетать out-html и out-ie с любым из сценариев, показанных в этой статье, для придания более удобного вида логам агентов антиспама.
Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: управление копиями публичных папок и клиентскими разрешениями .