Hi, I liked that idea but it didn't work so great. Here's my code
$OutputFile = "folder name"
$run_date = Get-Date -format g
$StartDate = (Get-Date).AddDays(-1).ToString("MM/dd/yyy")
$EndDate = (Get-Date).ToString("MM/dd/yyy")
$SecureOffice365AdminPassword = ConvertTo-SecureString -AsPlainText “password” -Force
$Office365Credentials = New-Object System.Management.Automation.PSCredential “email@email.com”, $SecureOffice365AdminPassword
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $Office365credentials -Authentication Basic –AllowRedirection
Import-PSSession $Session -AllowClobber | Out-Null
$Recipients = Get-Recipient -ResultSize Unlimited | select PrimarySMTPAddress
$MailTraffic = @{}
foreach($Recipient in $Recipients)
{
$MailTraffic[$Recipient.PrimarySMTPAddress.ToLower()] = @{}
}
$Recipients = $null
$Messages = $null
$Page = 1
do
{
Write-Host “Collecting Message Tracking - Page $Page…”
$CurrMessages = Get-MessageTrace -PageSize 5000 -StartDate $StartDate -EndDate $EndDate -Page $Page | Select Received,SenderAddress,RecipientAddress,Size
$Page++
$Messages += $CurrMessages
}
until ($CurrMessages -eq $null)
Remove-PSSession $session
foreach($Message in $Messages)
{
if ($Message.SenderAddress -ne $null)
{
if ($MailTraffic.ContainsKey($Message.SenderAddress))
{
$MessageDate = Get-Date -Date $Message.Received -Format yyyy-MM-dd
if ($MailTraffic[$Message.SenderAddress].ContainsKey($MessageDate))
{
$MailTraffic[$Message.SenderAddress][$MessageDate][‘Outbound’]++
$MailTraffic[$Message.SenderAddress][$MessageDate][‘OutboundSize’] += $Message.Size
$MailTraffic[$Message.SenderAddress][$MessageDate][‘Attachments’] ++
$MailTraffic[$Message.SenderAddress][$MessageDate][‘AttachmentsSize’] += $Message.Size ## CGW
}
else
{
$MailTraffic[$Message.SenderAddress][$MessageDate] = @{}
$MailTraffic[$Message.SenderAddress][$MessageDate]['Outbound'] = 1
$MailTraffic[$Message.SenderAddress][$MessageDate]['Inbound'] = 0
$MailTraffic[$Message.SenderAddress][$MessageDate]['InboundSize'] = 0
$MailTraffic[$Message.SenderAddress][$MessageDate]['OutboundSize'] += $Message.Size
}
}
}
if ($Message.RecipientAddress -ne $null)
{
if ($MailTraffic.ContainsKey($Message.RecipientAddress))
{
$MessageDate = Get-Date -Date $Message.Received -Format yyyy-MM-dd
if ($MailTraffic[$Message.RecipientAddress].ContainsKey($MessageDate))
{
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘Inbound’]++
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘InboundSize’] += $Message.Size
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘Attachments’]++
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘AttachmentsSize’] += $Message.Size
}
else
{
$MailTraffic[$Message.RecipientAddress][$MessageDate] = @{}
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘Inbound’] = 1
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘Outbound’] = 0
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘Attachment’] = 0
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘OutboundSize’] = 0
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘InboundSize’] += $Message.Size
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘AttachmentsSize’] = 0
}
}
}
if ($Message.RecipientAddress -ne $null)
{
if ($MailTraffic.ContainsKey($Message.RecipientAddress))
{
$MessageDate = Get-Date -Date $Message.Received -Format yyyy-MM-dd
if ($MailTraffic[$Message.RecipientAddress].ContainsKey($MessageDate))
{
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘Attachments’]++
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘AttachmentsSize’] += $Message.Size
}
else
{
$MailTraffic[$Message.RecipientAddress][$MessageDate] = @{}
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘Inbound’] = 0
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘Outbound’] = 0
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘Attachments’] = 1
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘OutboundSize’] = 0
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘InboundSize’] += $Message.Size
$MailTraffic[$Message.RecipientAddress][$MessageDate][‘AttachmentsSize’] = 0
}
}
}
}
$table = New-Object system.Data.DataTable “MailboxStats”
$col1 = New-Object system.Data.DataColumn Date,([datetime])
$table.columns.add($col1)
$col2 = New-Object system.Data.DataColumn Recipient,([string])
$table.columns.add($col2)
$col3 = New-Object system.Data.DataColumn Inbound,([int])
$table.columns.add($col3)
$col4 = New-Object system.Data.DataColumn Outbound,([int])
$table.columns.add($col4)
$col5 = New-Object system.Data.DataColumn InboundAttachments,([int])
$table.columns.add($col5)
ForEach ($Recipient in $MailTraffic.keys)
{
if (($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’))
{
$RecipientName = $Recipient
foreach($Date in $MailTraffic[$RecipientName].keys)
{
$row = $table.NewRow()
$row.Date = $Date
$row.Recipient = $RecipientName
$row.Inbound = $MailTraffic[$RecipientName][$Date].Inbound
$row.InboundAttachments = $MailTraffic[$RecipientName][$Date].Attachments -Match ‘.doc|.xls|.pdf|.txt’ <----didn’t work
if (($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’) -Or ($Recipient -eq ‘email@email.com’)) {
if ($MailTraffic[$RecipientName][$Date].Outbound - $MailTraffic[$RecipientName][$Date].Inbound -lt 0) {
$row.Outbound = (($MailTraffic[$RecipientName][$Date].Outbound) - ($MailTraffic[$RecipientName][$Date].Inbound)) * -1
}
else {
$row.Outbound = ($MailTraffic[$RecipientName][$Date].Outbound) - ($MailTraffic[$RecipientName][$Date].Inbound)
}
} else {
$row.Outbound = ($MailTraffic[$RecipientName][$Date].Outbound)
}
$table.Rows.Add($row)
}
}
}