exchange2010

Wer kennt das nicht. Man legt einen neuen Exchangebenutzer an, setzt ein Startkennwort und übergibt es seinen Usern mit der Bitte es sofort zu ändern.
Leider weiß man als Administrator mittlerweile das diese Bitte nur zu gerne vergessen oder gar ignoriert wird.
Mit diesem Powershellscript haben wir die Möglichkeit die Benutzerkonten zu testen.
Dazu muss man nur das Startkennwort angeben. Es wird dann automatisch jeder Benutzer getestet. Bei dem Benutzer dessen Kennwort gleich dem Startkennwort ist erhaltenwir die Konsolenausgabe in ROT. Alle anderen in Grün

 

Flattr this!

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!