Поиск на сайте: Расширенный поиск


Новые программы oszone.net Читать ленту новостей RSS
CheckBootSpeed - это диагностический пакет на основе скриптов PowerShell, создающий отчет о скорости загрузки Windows 7 ...
Вы когда-нибудь хотели создать установочный диск Windows, который бы автоматически установил систему, не задавая вопросо...
Если после установки Windows XP у вас перестала загружаться Windows Vista или Windows 7, вам необходимо восстановить заг...
Программа подготовки документов и ведения учетных и отчетных данных по командировкам. Используются формы, утвержденные п...
Red Button – это мощная утилита для оптимизации и очистки всех актуальных клиентских версий операционной системы Windows...
OSzone.net Microsoft Exchange Server Exchange Server 2007 Получение статистики почтовых ящиков в Exchange 2007 RSS

Получение статистики почтовых ящиков в Exchange 2007

Текущий рейтинг: 4.2 (проголосовало 20)
 Посетителей: 11031 | Просмотров: 17234 (сегодня 0)  Шрифт: - +

Получение списка почтовых ящиков вместе с их размерами должно занять довольно высокое место в списке часто задаваемых вопросов от администраторов Exchange. В Exchange 2000 и Exchange 2003 эту информацию можно было посмотреть с помощью оснастки Exchange System Manager. Также можно было экспортировать информацию, представленную в Exchange System Manager в текстовый формат и затем импортировать эту информацию в такое приложение как Excel. Другие члены Exchange сообщества публиковали VB сценарии, использовавшие Windows Management Instrumentation (WMI) или Messaging Application Programming Interface (MAPI), чтобы выполнять практически то же самое. Конечно, некоторым администраторам было иногда трудно понять эти сценарии и модифицировать их. Как вы наверняка теперь знаете, Exchange 2007 предлагает Exchange Management Shell для администрирования Exchange 2007 с помощью командной строки, или команд cmdlets, как их теперь называют, которые значительно упрощают способы получения статистических данных о почтовых ящиках.

Основы Get-MailboxStatistics

Самой основной командой Exchange Management Shell является команда Get-MailboxStatistics. На рисунке 1 показан пример данных, полученных после использования этой команды без каких-либо дополнительных параметров. Эта команда запущена на локальном почтовом сервере.

Рисунок 1: Результаты запуска команды Get-MailboxStatistics по умолчанию

Рисунок 1: Результаты запуска команды Get-MailboxStatistics по умолчанию

Как вы видите, по умолчанию мы имеем четыре раздела информации для каждого почтового ящика на локальном почтовом сервере, отображаемое имя ящика, количество объектов в ящике, статус ограничения объема хранения ящика и последнее время входа. Действительный размер ящика не отображается по умолчанию, поэтому первой задачей будет определение атрибута, хранящего это значение. Одним из способов определения доступных атрибутов, которые можно получить, является передача результатов команды в Format-List cmdlet, и fl, если говорить короче. Например, наша команда теперь будет выглядеть так:

Get-MailboxStatistics | fl

На рисунке 2 показаны результаты применения этой команды, где показаны атрибуты почтового ящика пользователя User2.

Рисунок 2: Результаты команды emGet-MailboxStatistics | fl

Рисунок 2: Результаты команды Get-MailboxStatistics | fl

Теперь можно просматривать другие важные компоненты информации, например TotalItemSize атрибут, который имеет значение в 1584504B, приблизительно 1.5MB. Очевидно, что пользователь User2 не использует большой почтовый ящик в Exchange 2007. Теперь, когда мы знаем, что интересующий нас атрибут называется TotalItemSize, мы можем изменять оригинальную команду, чтобы извлекать эту информацию наряду с именем почтового ящика и количеством объектов в нем. Используемая для этого команда приведена ниже. Обратите внимание на тот факт, что в этот раз мы использовали команду Format-Table, или коротко ft, чтобы получить данные в формате таблицы:

Get-MailboxStatistics | ft DisplayName,TotalItemSize,ItemCount

Результаты использования этой команды показаны на рисунке 3.

Рисунок 3: Get-MailboxStatistics с размерами почтовых ящиков

Рисунок 3: Get-MailboxStatistics с размерами почтовых ящиков

Как продвинуться дальше, если это довольно сжатые результаты, говорящие нам практически обо всем, что нужно знать. Однако у этих данных есть пара недостатков. Во-первых, данные приведены ни в восходящей и не в нисходящей последовательности, поэтому не сразу видно, какой ящик имеет самый большой размер. Во-вторых, столбец TotalItemSize по умолчанию показан в байтах, что также не очень удобно при чтении.

Дополнительные форматы Get-MailboxStatistics

Давайте сначала обратимся к порядку данных результата. Сортировка объектов с помощью PowerShell на самом деле проста, если использовать, как вы догадались, команду Sort-Object. Все, что вам для этого потребуется, это получить статистику почтовых ящиков и обработать результаты с помощью команды Sort-Object, прежде чем обрабатывать их с помощью Format-Table cmdlet. Для обработки информации в команде Sort-Object нам нужно определить, какой столбец мы хотим упорядочить, и по какому критерию мы будем это делать. Первый параметр, который нам нужно добавить в Sort-Object, это название столбца, которое в нашем случае будет TotalItemSize. Затем мы добавляем либо 'Descending (в порядке убывания), либо 'Ascending (в порядке возрастания) направление упорядочивания. Давайте для начала отобразим самые большие почтовые ящики, что в большинстве случаев является именно тем, что нужно знать администраторам. Команда теперь будет такой:

Get-MailboxStatistics | Sort-Object TotalItemSize 'Descending | ft
DisplayName,TotalItemSize,ItemCount

Результаты использования этой команды показаны на рисунке 4.

Рисунок 4: Get-MailboxStatistics с размерами ящиков в нисходящей последовательности

Рисунок 4: Get-MailboxStatistics с размерами ящиков в нисходящей последовательности

Далее нам нужно преобразовать размеры ящиков из байт в нечто более удобное. Мегабайты будут очевидным ответом, хотя с учетом стремительного роста размеров почтовых ящиков не исключено, что в ближайшем будущем по умолчанию будут использоваться гигабайты. Однако в моей тестовой системе используются ящики относительно небольших размеров, я собираюсь использовать отображение размеров в килобайтах. Для этого нам потребуется заменить параметр TotalItemSize в нашей команде чем-то более сложным:

@{ expression={$_.TotalItemSize.Value.ToKB()}}

Теперь наша команда выглядит следующим образом:

Get-MailboxStatistics | Sort-Object TotalItemSize 'Descending | ft
DisplayName,@{ expression={$_.TotalItemSize.Value.ToKB()}},ItemCount

Результаты использования этой команды показаны на рисунке 5. Если вы хотите отображать размеры ящиков в мегабайтах, используйте TotalItemSize.Value.ToMB в этой команде. Или вы можете использовать TotalItemSize.Value.ToGB для отображения размеров в гигабайтах.

Рисунок 5:Get-MailboxStatistics с размерами ящиков в KB

Рисунок 5: Get-MailboxStatistics с размерами ящиков в KB

Так гораздо лучше. Но подождите! Посмотрите на названия столбцов теперь. Столбец, который ранее назывался TotalItemSize, теперь имеет весьма громоздкое название $_.TotalItemSize.Value.ToKB(). Мы можем исправить это довольно легко путем добавления нового ярлыка команде. На самом деле для этого вам нужно добавить изменение в команду, чтобы правильно обозначить столбец. Новая команда показана ниже:

Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | ft
DisplayName,@{label="TotalItemSize(KB)";expression={$_.TotalItemSize.Value.ToKB()}},
ItemCount

Результаты использования команды показаны на рисунке 6:

Рисунок 6: Get-MailboxStatistics с обозначенным столбцом названий

Рисунок 6: Get-MailboxStatistics с обозначенным столбцом названий

Наконец, у нас есть результаты, которые имеют удобный формат и которые можно использовать, чтобы определить самые большие почтовые ящики. Теперь вам нужно будет лишь запускать этот сценарий каждый день, неделю или месяц. Очевидно, что такие приложения, как System Center Operations Manager (SCOM) 2007 выводят эту информацию с помощью консоли управления, поэтому как нам выполнить эти же действия в оболочке Exchange Management Shell? Самым простым способом является отправка этой информации по электронной почте, поэтому давайте посмотрим, как это можно сделать.

Отправка результатов по электронной почте

На рисунке 7 показан PowerShell сценарий под названием sendstats.ps1, который можно использовать сначала для генерирования статистки почтовых ящиков с помощью команды, созданной в этой статье, а затем для отправки результатов этой команды по электронной почте администратору. Первое, что нужно учитывать в этом сценарии, это то, что результаты команды Get-MailboxStatistics были направлены в mailboxes.txt файл. Этот файл создается в той папке, из которой запущен сценарий. Другие строки сценария создают и отправляют электронное письмо, прикрепляя файл mailboxes.txt в качестве вкладыша. Важно также учитывать, что строка, начинающаяся с $SendingServer, ссылается на FQDN почтовый сервер, который отвечает за отправку сообщений. Поэтому необходимо убедиться, что данный сервер сможет на самом деле отправлять сообщения.

###Отправка сценария статистики почтовых ящиков

###Сначала, администратор должен изменить значения
###сообщения следующим образом
section$FromAddress = "MailboxReport@ngh.net"$ToAddress =
"administrator@ngh.net"$MessageSubject = "Mailbox Size Report"$MessageBody =
"Attached is the current list of mailbox sizes."$SendingServer = "e2k7.ngh.net"

###Теперь получить статистику и сохранить ее в 
###текстовом файле
Get-MailboxStatistics | Sort-Object
TotalItemSize -Descending | ft 
isplayName,@{label="TotalItemSize(KB)";expression={$_.TotalItemSize.Value.ToKB()}},
ItemCount > mailboxes.txt

###Создать сообщение и добавить текстовый файл
###статистики как
вкладыш$SMTPMessage = New-Object System.Net.Mail.MailMessage
$FromAddress, $ToAddress, $MessageSubject,
$MessageBody$Attachment = New-Object Net.Mail.Attachment("./
ailboxes.txt")$SMTPMessage.Attachments.Add($Attachment)

###Отправить сообщение
$SMTPClient = New-Object System.Net.Mail.SMTPClient 
SendingServer$SMTPClient.Send($SMTPMessage)
Рисунок 7: Сценарий SendStats.PS1

Как только эти действия выполнены, сценарий отправит сообщение, как показано на рисунке 8. Открытие вкладыша отобразит результаты сценария Get-MailboxStatistics, как показано на рисунке 9.

Рисунок 8: Отчет, отправленный по почте

Рисунок 8: Отчет, отправленный по почте

Рисунок 9: Содержимое вкладыша

Рисунок 9: Содержимое вкладыша

Хотя эти действия дают нам почтовое сообщение с соответствующими данными, содержащимися в нем, в самом сценарии ничего не содержится, если учитывать, что он запускается регулярно. Чтобы этого добиться, мы можем воспользоваться службой планировки Windows и выполнять сценарий на регулярной основе. Для этого нам нужно запустить Exchange Management Shell и определить сценарий, который необходимо выполнить. Это можно сделать с помощью следующей команды:

PowerShell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange
Server\Bin\ExShell.psc1" -Command "./sendstats.ps1"

Здесь мы видим запуск PowerShell и загрузку файла консоли Exchange, расположенного на диске C: в этом примере. Этот параметр можно менять в зависимости от того, на какой диск был установлен Exchange 2007. Параметр 'Command используется для определения сценария, который мы хотим запустить, а именно sendstats.ps1.

Заключение

В этой статье мы рассмотрели общие проблемные вопросы, с которыми сталкиваются администраторы Exchange, а если говорить точнее, возможность создания списков почтовых ящиков и их размеров. Хотя такие инструменты, как SCOM 2007 могут делать это за вас, из примеров видно, что эти результаты можно очень просто получить, используя Exchange Management Shell команду Get-MailboxStatistics. PowerShell может стать начальным и в то же время сложным витком обучения, но это то, на что стоит потратить время и силы.

Автор: Нейл Хобсон  •  Иcточник: MSexchange.ru  •  Опубликована: 21.04.2008
Нашли ошибку в тексте? Сообщите о ней автору: выделите мышкой и нажмите CTRL + ENTER
Теги:  


Оценить статью:
Вверх
Комментарии посетителей
Комментарии отключены. С вопросами по статьям обращайтесь в форум.