Tägliche E-Mail-Statistiken

(Download aller Dateien am Ende des Beitrages)

Folgende Variablen am Ende (Funktion sendmail) müssen noch angepasst werden:

$SmtpClient.Host
$mailmessage.from
$mailmessage.To.add
$mailmessage.CC.add

Um einen Report vom aktuellen Tag zu erhalten das .AddDays(-1) bei $Start und $End löschen.

In einer .ps1 Datei folgendes Speichern: (z.B. daily-report.ps1)

$hubs = Get-TransportServer

# Get the start date for the tracking log search
$Start = (Get-Date -Hour 00 -Minute 00 -Second 00).AddDays(-1)

# Get the end date for the tracking log search
$End = (Get-Date -Hour 23 -Minute 59 -Second 59).AddDays(-1)

$Datum = $Start.ToShortDateString()

$receive = $hubs | get-messagetrackinglog -Start $Start -End $End -EventID „RECEIVE“ -ResultSize Unlimited | select Sender,RecipientCount,TotalBytes,Recipients
$send = $hubs | get-messagetrackinglog -Start $Start -End $End -EventID „SEND“ -ResultSize Unlimited | select Sender,RecipientCount,TotalBytes
$mreceive = $receive | Measure-Object TotalBytes -maximum -minimum -average -sum
$msend = $send | Measure-Object TotalBytes -maximum -minimum -average -sum

$anzahl = $mreceive.count + $msend.count
$volumen = ($mreceive.sum + $msend.sum) / (1024 * 1024)

$volumen = „{0:N2}“ -f $volumen + “ MB“

$msendmb = $msend.sum / (1024 * 1024)
$vsend = „{0:N2}“ -f $msendmb + “ MB“
$bigsend = $msend.maximum / (1024 * 1024)
$avsend = $msend.average / 1024

$bigsendmb = „{0:N2}“ -f $bigsend + “ MB“
$avsendkb = „{0:N2}“ -f $avsend + “ KB“

$mreceivemb = $mreceive.sum / (1024 * 1024)
$vreceive = „{0:N2}“ -f $mreceivemb + “ MB“
$bigreceive = $mreceive.maximum / (1024 * 1024)
$avreceive = $mreceive.average / 1024

$bigreceivemb = „{0:N2}“ -f $bigreceive + “ MB“
$avreceivekb = „{0:N2}“ -f $avreceive + “ KB“

#$senders = $send | Group-Object Sender | Sort-Object Count -Descending
#$topsender = $senders[0].Name
#$topsender += $senders[0].Count

#$receivers = $receive | Group-Object Recipients | Sort-Object Count -Descending
#$topreceiver = $receivers[0]
#$topreceiver

$obj = new-object psObject

$obj |Add-Member -MemberType noteproperty -Name „Datum“ -Value $Datum
$obj |Add-Member -MemberType noteproperty -Name „Anzahl Gesendete E-Mails“ -Value $msend.Count
$obj |Add-Member -MemberType noteproperty -Name „Volumen Gesendete E-Mails“ -Value $vsend
$obj |Add-Member -MemberType noteproperty -Name „Volumen der größten E-Mail Out“ -value $bigsendmb
$obj |Add-Member -MemberType noteproperty -Name „Durchschnittliche Größe Out“ -value $avsendkb
$obj |Add-Member -MemberType noteproperty -Name „Anzahl Empfangene E-Mails“ -Value $mreceive.Count
$obj |Add-Member -MemberType noteproperty -Name „Volumen Empfangene E-Mails“ -Value $vreceive
$obj |Add-Member -MemberType noteproperty -Name „Volumen der größten E-Mail In“ -value $bigreceivemb
$obj |Add-Member -MemberType noteproperty -Name „Durchschnittliche Größe In“ -value $avreceivekb
$obj |Add-Member -MemberType noteproperty -Name „Gesamtanzahl“ -Value $anzahl
$obj |Add-Member -MemberType noteproperty -Name „Volumen Gesamt“ -Value $volumen

$out = $Datum + „;“ + $msend.count + „;“ + $vsend + „;“ + $mreceive.count + „;“ + $vreceive + „;“ + $anzahl + „;“ + $volumen
$out | out-file c:\Scripts\daily_out.csv -append -encoding default

function sendmail($body)
{
$SmtpClient = new-object system.net.mail.smtpClient
$MailMessage = New-Object system.net.mail.mailmessage
$SmtpClient.Host = „mail.domain.tld“
$mailmessage.from = „postmaster@domain.tld“
$mailmessage.To.add(„empfaenger@domain.tdl“)
$mailmessage.CC.add(„empfaenger2@domain.tld“)
$mailmessage.Subject = “Exchange daily report for $Datum”
$MailMessage.IsBodyHtml = $false
$mailmessage.Body = $body

$smtpclient.Send($mailmessage)
}

$obj = $obj -replace(„@{„,““)
$obj = $obj -replace(„=“,“:t")
$obj = $obj -replace("; ","
n“)
$obj = $obj -replace(„}“,“n")

sendmail $obj

In einer .bat Datei folgendes Speichern:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command ". 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; C:\Scripts\daily-report.ps1"
Exit

 

Größe der Postfächer

Anpassen:

$mailbox2 Option -server SERVERNAME
$SmtpClient.Host
$mailmessage.from
$mailmessage.To.add
$mailmessage.CC.add

In einer .ps1 Datei folgendes Speichern: (z.B. mailbox_size.ps1)

$Day = (Get-Date).day
$Month = (Get-Date).month
$Year = (Get-Date).Year
$mailbox1 = "Mailbox Report for $Day/$Month/$Year
n“
$mailbox2 = get-mailboxstatistics -server <server> | sort TotalItemSize | FT DisplayName,TotalItemSize | Out-String
$messagesubject = „Daily Mailbox Usage Report“
$mailboxfinal = $mailbox1 + $mailbox2
$messagesubject = „Daily Mailbox Usage Report“
$mailboxfinal = $mailbox1 + $mailbox2
$SmtpClient = new-object system.net.mail.smtpClient
$MailMessage = New-Object system.net.mail.mailmessage
$SmtpClient.Host = „mail.domain.tld“
$mailmessage.from = „postmaster@domain.tld“
$mailmessage.To.add(„empfaenger@domain.tdl“)
$mailmessage.CC.add(„empfaenger2@domain.tdl“)
$mailmessage.Subject = $messagesubject
$mailmessage.Body = $mailboxfinal
$smtpclient.Send($mailmessage)

In einer .bat Datei folgendes Speichern:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command „. ‚C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1‘; Connect-ExchangeServer -auto; C:\Scripts\mailbox_size.ps1“
Exit

Die .bat Dateien können nun in der Aufgabenplanung regelmäßig ausgeführt werden.

Download der Scripte:

dailyreport.ps1

mailboxsize.ps1

start_mailbox_size.bat

start_daily_report.bat

Flattr this!