Возникла задача по выгрузке определенной части пользователей с подсчетом занимаемого ими места на сервере Exchange 2010.
Стандартный командлет Get-MailboxStatistics мне не подходит, так как задаваемые им условия – это почтовая база или почтовый сервер. Мои же пользователи были раскиданы по разным почтовым базам.
К счастью, они расположены в отдельном OU, поэтому мне не нужно заморачиваться с фильтрами.
Скрипт выполняется в окне EMS (Exchange Management Shell), поэтому я не пишу команд для подгрузки командлетов Exchange.
get-mailbox -OrganizationalUnit "holding.com/Users/" -resultsize unlimited | sort Name | %{
$Size=Get-MailboxStatistics $_.SamAccountName
$_ | Select-object Name, SamAccountName, @{Name="Size";Expression={((($Size).TotalItemSize).value).toMB()+((($Size).TotalDeletedItemSize).value).toMB()}}} | export-csv -encoding unicode -NoTypeInformation c:\tmp\test1.csv
Полученный CSV-файл вы открываете в Excel, раскидываете текст по столбцам, используя разделитель “,” и наслаждаетесь жизнью.
Обратите внимание, что считается размер, реально занимаемый ящиком в базе, то есть общий размер плюс размер сообщений из каталога Recoverable Items (которые удалены из корзины и хранятся в ящике по умолчанию 14 дней. Еще они называются Dumpster.
За помощь в написании скрипта отдельное спасибо Александру Васильеву.