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'"
exitNachtrag: 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



hey
danke für den beitrag!
ich habe selber ein bisschen rumgespielt aber es leider nicht geschafft, vielleicht kannst du mir helfen?
ich möchte zu der täglichen statistik noch eine wöchentliche und eine monatliche..
wie mache ich das?
danke für die Hilfe
Yannick
Super Script! Vielen Dank für diesen Eintrag!
[New Post] Exchange 2007: Täglicher Report über Messagestatistik – via @twitoaster http://www.roland-ehle.de/archives/997
via Twitoaster