Статистика почтовых ящиков Exchange 2003


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

Например, нам необходимо получить данные о том, каковы текущие размеры всех почтовых ящиков. Нет ничего проще!
От имени учетной записи с достаточными административными привилениями, на любой рабочей станции домена c установленной на оной консолью PowerShell выполняем команду:
Get-WmiObject -ComputerName MyExch2003 -Namespace root\MicrosoftExchangeV2 -Class Exchange_Mailbox | Select MailboxDisplayName, Size -First 10000

Не более сложно получить и предварительно отсортированный по размеру список почтовых ящиков:
Get-WmiObject -ComputerName MyExch2003 -Namespace root\MicrosoftExchangeV2 -Class Exchange_Mailbox | sort size -desc | Select MailboxDisplayName, Size -First 10000

И, наконец, получим список почтовых ящиков, отсортированный по дате последнего отключения от оного, а затем по размеру. Это позволит наглядно увидеть почтовые ящики, которыми уже давно никто не пользуется:
Get-WmiObject -ComputerName MyExch2003 -Namespace root\MicrosoftExchangeV2 -Class Exchange_Mailbox | sort LastLogoffTime, size | Select MailboxDisplayName, Size, LastLogoffTime -First 10000

Стоит лишь только предостеречь от излишне рьяных действий по итогам поверхностного анализа полученных данных. Если с почтового ящика стоит пересылка сообщений, дата последнего выхода может находиться в далеком прошлом, но существование самого адреса оказаться актуальным (и кандидатом в назначение вторым адресом другому пользователю).
И, разумеется, следует не забыть, что для ящиков, открытых в данный момент времени, поле LastLogoffTime будет пустым.

А что, если нам необходимо получить не список ящиков, а параметры ящиков из некоторого списка? Например, Имя / Размер / Хранилище в котором находится почтовый ящик / Последнее время выхода из ящика.
Это тоже несложно: нам понадобиться всего лишь сам список в текстовом формате, та же самая рабочая станция с консолью Powershell и две строки команд:
$BoxesList = Get-Content C:\lists\boxlist.txt
foreach ($boxuser in $BoxesList) {Get-WmiObject -ComputerName MyExch2003 -Namespace root\MicrosoftExchangeV2 -Class Exchange_Mailbox | Where {$_.MailboxDisplayName -like $boxuser} | Select MailboxDisplayName, Size, StoreName, LastLogoffTime}

Необходимо, правда, отметить, что подобный циклический запрос достаточно спорен с точки зрения рационального использования вычислительных ресурсов 😉


Ваш отзыв