exchange

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!

Manchmal benötigt man die Buildnummer und die Version des Exchangeservers den man im Netzwerk hat.Das geht natürlich auch ganz bequem per Powershell die der Exchangeserver 2010 mitbringt.

 

Flattr this!

Wir haben mehrfach das Problem gehabt das wenn Benutzer Ihr Kennwort im OWA ändern wollten das Problem

„Das eingegebene Kennwort entspricht nicht den Mindestsicherheitsanforderungen.“ auftauchte.

Das passierte meistens wenn die Benutzer mehrfach hintereinander das Kennwort ändern wollten.

Abhilfe schafft es das „Minimale Kennwortalter“ in den Gruppenrichtlinien auf „0“ zu setzen. Somit kann der Benutzer beliebig oft am Tag sein Kennwort ändern.

Flattr this!

In der Exchange Management Console ist es möglich, in den Eigenschaften eines Postfaches, eine Weiterleitung zu setzen.

Empfängerkonfiguration –> Postfach –> Doppelklick auf ein Postfach –> Nachrichtenübermittlungseinstellungen –> Zustellungsoptionen –> Eigenschaften –> Weiterleiten an:

Dies ist aber nur für Konten innerhalb der eigenen Organisation möglich. Es wäre nun möglich über einen neu angelegten Kontakt, mit der entsprechenden externen Mailadresse, hier eine Weiterleitung einzutragen oder Transportregeln zu benutzen. Wem das aber zu umständlich ist kann sich mit der Shell behelfen.

 

BENUTZERNAME – der Alias des Kontos

DeliverToMailboxAndForward – Weiterleitung an Postfach und Weiterleitungsadresse übermitteln

externeAdresse@extern.tld – dies mit der Mailadresse ersetzen, wohin weitergeleitet werden soll, z.B. foo.bar@abc.com

 

Damit die externe Weiterleitung funktioniert, sollte noch folgendes überprüft werden:

 

 

 

Zum Entfernen der Weiterleitung wird wieder der set-mailbox Befehl genutzt mit: -ForwardingSmtpAddress $null

Flattr this!

Durch das Setzen/Ändern von Umleitungen fürs OWA im IIS startete die Exchange Management Console nicht mehr.

Folgender Fehler wurde angezeigt:

Initialisierungsfehler
Fehler beim Abrufen von Benutzerinformationen für ‚<Benutzer>‘
Fehler beim starten eines Befehls auf dem Remoteserver.
Der WinRM-Client kann die Anforderung nicht verarbeiten. Der Inhaltstype der HTTP-Anwort von Zielcomputer kann nicht ermittelt werden. Der Inhaltstyp fehlt oder ist ungültig.

Ursache: die web.conf ig in C:\inetpub\wwwroot war fehlerhaft

Lösung: web.config löschen und die HTTP-Umleitung neu anlegen

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!