在日常管理的时候,经常会遇到这样的情况,领导想知道每个邮箱每天发送了多少封邮件?我们的服务器一天或者一个月发送多少邮件?又或者是服务器一天有多少发送失败的邮件,发往某一个地址有多少数量?近期平均邮箱数据库增长量是多少?这些部分可用Exchange图形实现部分不能实现,或者需要借助第三方工具来实现。统计收发邮件数量等这些有很博客里面已经写的很详细了,在这里重复介绍,下面我重点介绍如何统计邮箱数据库增长情况。
统计邮箱数据库服务器增长情况可以用这个脚本来实现:
# From date must be a MONDAY
$From = Get-Date "23/05/2011" $To = $From.AddDays(7)[Int64] $intTotalSentSize = $intTotalSent = 0
[Int64] $intTotalRecSize = $intTotalRec = 0Write-Host "From, To, # Sent, Size Sent, # Received, Size Received"
Do
{ Get-TransportServer | Get-MessageTrackingLog -ResultSize Unlimited -Start $From -End $To | ForEach { # Sent E-mails If ($_.EventId -eq "RECEIVE" -and $_.Source -eq "STOREDRIVER") { $intTotalSentSize += $_.TotalBytes $intTotalSent++ } # Received E-mails If ($_.EventId -eq "DELIVER") { $intTotalRecSize += $_.TotalBytes $intTotalRec++ } }# Convert the size to MB and round it
$intTotalSentSize = [Math]::Round($intTotalSentSize/1MB, 0) $intTotalRecSize = [Math]::Round($intTotalRecSize/1MB, 0) # Create a TempTo variable as when we are searching the logs we search up to the next day, but we want to print the day before $FromSmall = $From.ToShortDateString() $TempTo = ($To.AddDays(-1)).ToShortDateString() Write-Host "$FromSmall, $TempTo, $intTotalSent, $intTotalSentSize, $intTotalRec, $intTotalRecSize"# Reset the variables to do another search
$From = $From.AddDays(7) $To = $From.AddDays(7) $intTotalSentSize = $intTotalSent = 0 $intTotalRecSize = $intTotalRec = 0 } While ($To -lt (Get-Date))此脚本可以按周统计每个周的接收和发送的邮件的总的大小,从而推测出每天邮件收发数据量的大小
这个脚本执行起来较简单,可以直接执行,时间可以根据需要更改
使用方法,
1、 将脚本文件“TotalEmailsSentReceivedPerWeek.ps1”复制到 邮箱数据库服务器C:\windows\system32文件夹下;
2、 以管理员身份打开Exchange命令行管理工具,连接到服务器后,输入TotalEmailsSentReceivedPerWeek.ps1,执行即可。
效果如下,依次显示起始时间,结束时间,发送,发送大小,接收,接收大小。
(时间是按一整周的时间来统计,测试环境下只在13年1月8号和9号发过邮件,故在2013/1/5,2013/1/11时间段有数据,并且发送和接收大小的单位为MB,故大小显示为零。)
统计出每周的邮件数据增长量之后,就可以推测每天发送邮件的数据量,从而对邮件大小设置,数据量增长情况以及存储配置进行合理的规划