########################################################################## # ScriptName: Get-MessageTracking.ps1 # Author: John Barsodi # Updated on: 08/04/2010 # Version: 0.5 # Desc: Gets send/receive stats for a particular user. # Tags: Email, messagetracking ########################################################################## $today = get-date -uFormat "%m/%d/%Y" Write-Host " " Write-Host "----------------Criteria Input----------------" $user = Read-Host "What is the users email address?" $MbxServer = (get-mailbox $user).Servername $Site = (Get-exchangeserver $MbxServer).site.name $SiteHTServers = Get-Exchangeserver | Where {($_.IsHubTransportServer -eq $true) -and ($_.site.name -like "$Site")} # Select Date Range Criteria Write-Host "Choose your date search range" Write-Host -ForegroundColor Red "********************************************************************************" Write-Host -ForegroundColor Red "Selecting multiple days can be resource intensive on your Hub Transport Servers" Write-Host -ForegroundColor Red "********************************************************************************" Write-Host " " Write-Host "1. Today" Write-Host "2. Last 7 Days" Write-Host "3. Last 14 Days" Write-Host "4. Last 30 Days" Write-Host " " $DateInput = Read-Host "Select 1-4" Write-Host " " switch ($DateInput) { 1 { $StartDate = $today $Days = 1 $SizeFactor = "1KB" $SizeLabel = "KB" break; } 2 { $StartDate = (get-date).adddays(-7).ToString("MM/dd/yyyy") $Days = 7 $SizeFactor = "1MB" $SizeLabel = "MB" break; } 3 { $StartDate = (get-date).adddays(-14).ToString("MM/dd/yyyy") $Days = 14 $SizeFactor = "1MB" $SizeLabel = "MB" break; } 4 { $StartDate = (get-date).adddays(-30).ToString("MM/dd/yyyy") $Days = 30 $SizeFactor = "1GB" $SizeLabel = "GB" break; } default { "** The selection could not be determined **"; break; } } Write-Host "-----------------Information------------------" Write-Host " " Write-Host -ForegroundColor Yellow "$User is on Mailbox Server $MbxServer" Write-Host -ForegroundColor Yellow "The following Hub Transport servers serve the $Site site and $MbxServer" Write-host -ForegroundColor Yellow "$SiteHTServers" Write-Host " " Write-Host "-----------------Information------------------" Write-Host " " Write-Host -ForegroundColor Yellow "Gathering Messaging Tracking Logs, please wait..." Write-Host " " foreach ($SvrObj in $SiteHTServers) { $ReceivedLog += Get-MessageTrackinglog -Server $SvrObj -Start $StartDate -Recipients $user -EventId Receive -resultsize unlimited $SendLog += Get-MessageTrackinglog -Server $SvrObj -Start $StartDate -Sender $user -EventId Receive -resultsize unlimited foreach ($recObj in $ReceivedLog) { $RecSize += $recObj.TotalBytes } foreach ($SendObj in $SendLog) { $SendSize += $SendObj.TotalBytes } $ReceivedTotal += $ReceivedLog.count $SendTotal += $SendLog.count } $AvgSendSize = [int](($SendSize / $SendTotal) / 1KB) $AvgRecSize = [int](($RecSize / $ReceivedTotal) / 1KB) $SendSize = [int]($SendSize / $SizeFactor) $RecSize = [int]($RecSize / $SizeFactor) $DailySendMsgAvg = [int]($SendTotal / $Days) $DailyRecMsgAvg = [int]($ReceivedTotal / $Days) Write-Host "--------------Start User Report---------------" Write-Host " " Write-Host "Time Period from $today to $StartDate" Write-Host "Total Sent Messages: $SendTotal" Write-Host "Total Sent Message Size: $SendSize $SizeLabel" Write-Host "Total Received Messages: $ReceivedTotal" Write-Host "Total Received Message Size: $RecSize $SizeLabel" Write-Host "Average item Sent Message Size: $AvgSendSize KB" Write-Host "Average item Receive Message Size: $AvgRecSize KB" Write-Host "Daily Average Messages Sent: $DailySendMsgAvg" Write-Host "Daily Average Messages Received: $DailyRecMsgAvg" Write-Host " " Write-Host "---------------End User Report----------------"