Skip to content

Exchange 2010 статистика по почтовым сообщениям

06.06.2012

Продолжаю серию публикаций кружка очумелых powershell’ных ручек. Нужно оценить почтовую активность? Будет сделано! Для этого потребуется Exchange Management Shell и .ps1-скрипт.

Пара комментариев. В массиве $SendersExclude указываются отправители, которых следует исключить из отчета. Переменные $StartDate и $EndDate имеют формат «м/д/г ч:м:с». Ну и, разумеется, все @domain.ru, встречающиеся в скрипте, должны быть заменены на реальный домен.

exchstat.ps1

Clear-Host
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 -ErrorAction SilentlyContinue
Clear-Variable MessagesAll,SendersExclude -ErrorAction SilentlyContinue
$MessagesAll = @()
$SendersExclude = @()
$SendersExclude += "PublicFolderDatabase054545@domain.com"
$SendersExclude += "PublicFolder54545454@domain.com"
$StartDate = "06/05/2012 00:00:00"
$EndDate = "06/06/2012 00:00:00"
$ServersHUB = ( Get-ExchangeServer | ? { $_.ServerRole -match "HubTransport" } )
Write-Host "Reading message tracking log on Exchange HUB servers: "
$ServersHUB | % {
 Write-Host "-" $_.Name "..."
 Get-MessageTrackingLog -Start $StartDate -End $EndDate -Server $_ -ResultSize Unlimited | % {
 $MessagesAll += $_
 } 
}
Write-Host "`nFound" ($MessagesAll | ? { $_.EventId -eq "RECEIVE" -and $_.Source -eq "STOREDRIVER" -and $SendersExclude -notcontains $_.Sender -and $_.Sender -match "@domain.com" }).Count "message(s) from" $StartDate "to" $EndDate "`n"
Write-Host "Top 20 senders:"
$MessagesAll | ? { $_.EventId -eq "RECEIVE" -and $_.Source -eq "STOREDRIVER" -and $SendersExclude -notcontains $_.Sender -and $_.Sender -match "@domain.com" } | Group-Object Sender | Sort-Object Count -Descending | Select-Object -First 20 | ft Name,Count -AutoSize
Write-Host "Top 20 senders by total messages size:"
$MessagesAll | ? { $_.EventId -eq "RECEIVE" -and $_.Source -eq "STOREDRIVER" -and $SendersExclude -notcontains $_.Sender -and $_.Sender -match "@domain.com" } | Select-Object Sender,TotalBytes | Group-Object Sender | Select-Object @( @{ Name = 'Name' ; Expression = { $_.Name } }, @{ Name = 'TotalItemSize(MB)' ; Expression = { [System.Math]::Round(($_.Group | Measure-Object -Property TotalBytes -Sum).Sum / 1MB, 2) } } ) | Sort-Object -Property 'TotalItemSize(MB)' -Descending | Select-Object -First 20

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

Реклама

From → Exchange

2 комментария
  1. Концовка последней строки скрипта не влезла и обрезалась. И спасибо за скрипт !

    • День добрый. Тем не менее, в буфер обмена можно скопировать :-) Рад, что помог!

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: