Archive

Countdown

    Keine Ereignisse vorhanden

Exchange 2007 / Exchange 2010: Täglicher Report über Messagestatistik

Nach langer Zeit wieder ein Artikel. Die Statistiker freuen sich, wenn sie immer mit Zahlen und Auswertungen “gefüttert” werden. Mit dem folgenden Powershell-Script kann eine Messagestatistik für eine Exchange 2007 Umgebung erstellt werden, die folgende Daten des Vortages enthält:

  • Anzahl gesendeter E-Mails
  • Volumen der gesendeten E-Mail
  • Anzahl empfangener E-Mails
  • Volumen der empfangenen E-Mails
  • Gesamtanzahl der E-Mails
  • Gesamtvolumen

Wier immer bei meinen Powershell-Ergüssen gilt: Script wurde in einer produktiven Umgebung erfolgreich getestet, und mir ist bewußt, dass man es sicherlich besser machen kann. Das Ergebnis der Auswertung wird in einer Textdatei für eine spätere Gesamtauswertung abgelegt und per E-Mail versendet.

Die E-Mail sieht dann wie folgt aus:

Datum: 24.05.2010
Anzahl Gesendete E-Mails:        336
Volumen Gesendete E-Mails:   60,08 MB
Anzahl Empfangene E-Mails:     1189
Volumen Empfangene E-Mails:                185,85 MB
Gesamtanzahl: 1525
Volumen Gesamt:          245,93 MB

$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"
 
$mreceivemb = $mreceive.sum / (1024 * 1024)
$vreceive = "{0:N2}" -f $mreceivemb + " MB"
 
$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 "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 "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:\daily.csv -append -encoding default
 
function sendmail($body)
{
$SmtpClient = new-object system.net.mail.smtpClient
$MailMessage = New-Object system.net.mail.mailmessage
$SmtpClient.Host = "mailserver.domain.local"
$mailmessage.from = "sender@domain.tld"
$mailmessage.To.add("recipient@domain.tld")
$mailmessage.CC.add("recipient@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

Will man das Powershell Script als Scheduled Task (Geplante Aufgabe) täglich ausführen, dann geht das am einfachsten über eine Batchdatei:

start C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -PSConsoleFile "D:\Exchange\bin\exshell.psc1" -command ". 'D:\Auto_Scripts\daily-report.ps1'"
 
exit

Nachtrag: Das Script läuft auch unter Exchange 2010, nur muss der Aufruf in der Batchdatei etwas anders aussehen:

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

3 comments to Exchange 2007 / Exchange 2010: Täglicher Report über Messagestatistik

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Comment Spam Protection by WP-SpamFree