Alle Beiträge von Don Matteo

lebt in Zürich, ist System Engineer MCP bei A-Enterprise GmbH. Mitglied des UNBLOG Network. Author und Blogger zu den Themen, Linux und Open Source. Tutorials für Windows, VMware, Synology, Fortinet.

Exchange MailboxStatistics Mail-Report

Exchange MailboxStatistics für Email Report

Exchange Administratoren möchten über die Aktivitäten der CAS und DAG informiert sein. Das PowerShell cmdlet Get-MailboxStatistics ermöglicht hierzu Reports zu erstellen.

Dieser Beitrag soll in einem Beispiel die Möglichkeiten aufzeigen, anhand eines einfachen Script eine Statistik der Mailboxen in einer Exchange Organisation zu erzeugen und als E-Mail Report zu versenden. Der Report enthält ferner den Exchange Health Status und die Speicherbelegung der Festplatten.

Installation

Das PowerShell Script erzeugt die Mailbox Statistic und den Health Status des Servers.

$a = "<style>"
$a = $a + "BODY{background-color:GhostWhite;}"
$a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}"
$a = $a + "TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:Gold;}"
$a = $a + "TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:Azure;}"
$a = $a + "</style>"

Add-PSSnapin Microsoft.Exchange.Management.Powershell.Admin -erroraction silentlyContinue

$email = ("your@email.com")
$date = (Get-Date -format F)
$exch = [system.environment]::MachineName
$build = (Get-ExchangeServer -Identity $env:exch | ft name,AdminDisplayVersion -HideTableHeaders -AutoSize)
$path = [Environment]::GetFolderPath('ApplicationData')
$file = "$path\report.html"
	if (test-Path $path\report.html) { remove-Item $path\report.html;
	Write-Host -ForegroundColor white -BackgroundColor Red    "Old file removed"
	}
ConvertTo-Html -Head $a  -Title "Exchange Mailbox statistics and health status for $exch" -Body "<h1> Computer Name : $exch </h1>" >  "$path\report.html"
$mailboxdata = (Get-MailboxStatistics -Server $exch | Sort-Object TotalItemSize -Descending | select DisplayName,@{label="TotalItemSize(MB)";expression={$_.TotalItemSize.Value.ToMB()}},ItemCount,LastLogonTime)
$HealthReport = (Get-HealthReport -Server $exch | Where-Object { $_.alertvalue -ne "Healthy" } | Select Server,State,HealthSet,HealthGroup,AlertValue,LastTransitionTime,MonitorCount,HaImpactingMonitorCount)
$disk = (Get-WMIObject Win32_Logicaldisk -ComputerName $exch | Select PSComputername,DeviceID,@{Name="SizeGB";Expression={$_.Size/1GB -as [int]}},@{Name="FreeGB";Expression={[math]::Round($_.Freespace/1GB,2)}})
$date | Out-file $file -append
$build | Out-file $file -append
$mailboxdata | ConvertTo-html -Body "<H2> Mailbox Statistics </H2>" >> $file
$HealthReport | ConvertTo-html -Body "<H2> Exchange Health Report </H2>" >> $file
$disk | ConvertTo-html -Body "<H2> Disk Space usage </H2>" >> $file
$smtpServer = "127.0.0.1"
$att = new-object System.Net.Mail.Attachment($file)
$msg = new-object System.Net.Mail.MailMessage
$smtp = new-object System.Net.Mail.SmtpClient($smtpServer)
$msg.From = "no_reply@$exch"
$msg.To.Add($email)
$msg.Subject = "Notification report from $exch"
$msg.Body = "$exch MailboxStatistics generated $date reported to attachment $file"
$msg.Attachments.Add($att)
$smtp.Send($msg)
$att.Disposen

Die Code Zeilen in eine Datei report.ps1 speichern und in der Exchange Management Shell mit .\report.ps1 ausführen. Bei $email wird ein gültiger E-Mail Empfänger definiert. Der Empfänger muss in der DAG existieren in dieser der Script ausgeführt wird. Sollen externe Empfänger den Report erhalten, kann für $smtpServer als Wert ein externer Host oder Mail Transport Agent angegeben werden.

Aus dem Aufgabenplaner lässt sich der Script geplant ausführen, zum Beispiel Täglich um 20.00 Uhr, dabei wird im Register Action im Feld Programm/Script:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

eingetragen, und im Feld Argumente:

-psconsolefile "D:\Program Files\Microsoft\Exchange Server\V15\Bin\exshell.psc1" -file "C:\windows\system32\report.ps1"

eingefügt. Damit wird der Script in der Exchange Management Shell ausgeführt. Im Register Allgemein muss die Checkbox Mit höchsten Privilegien ausführen aktiviert werden.

Exchange MailboxStatistics für Email Report

Release Update und Bugfix auf Github

PuTTY SSH zu ESXi-Host

VMware ESXi bringt laufend Neuerungen, so wurde auch der OpenSSH 7.1 Daemon integriert. Dabei kommt es beim versuch mit PuTTY ein SSH Terminal zum ESXi-Host zu initialisieren zum timeout.

mit anschliessendem Fehler: Server unexpectedly closed network connection.

Auf dem ESXi-Host wird folgender Eintrag protokolliert, in /var/log/auth.log:

2016-08-26T19:54:51Z sshd[35650]: error: Hm, kex protocol error: type 30 seq 1

Der Grund liegt beim Algorithmus für den Schlüsselaustausch, Diffie-Hellman group exchange des PuTTY, dieser bereits über 10 Jahre alte Algorithmus zur Verschlüsselung wird von OpenSSH 7.1 nicht mehr unterstützt.

PuTTY Key exchange Algorithmus

Damit dennoch über PuTTY SSH Terminal Sessions möglich sind, muss der Algorithmus Diffie-Hellman group exchange nach unten verschoben werden, so das der neuere Algorithmus Diffie-Hellman group 14 zur ersten Priorität wird.

PuTTY Kex Diffie-Hellman

Die PuTTY Einstellung zur Session des ESXi 6.0 Host speichern, damit sind SSH-Terminal Verbindungen wieder möglich.

PuTTY SSH Client

PuTTY ist ein SSH- und Telnet-Client, der ursprünglich von Simon Tatham für die Windows-Plattform entwickelt wurde. Es ist eine Open-Source-Software, die mit Quellcode verfügbar ist und von einer Gruppe Freiwilliger entwickelt und unterstützt wird. PuTTY ist der Name einer erstmals im Jahr 1998 erschienenen Terminal-Emulatorsoftware.

Der PuTTY Client ist eine Software für textbasierte Terminalsitzungen. Mit der Software lassen sich Remote-Verbindungen per Telnet, Secure Shell, Remote Login und anderer Protokolle zu einer für diese Protokolle als Server agierenden Gegenstelle herstellen und Befehle über die Kommandozeilenoberfläche absetzen. Die Terminal-Emulatorsoftware agiert als Client und ist auf Rechnern mit Betriebssystemen wie Windows, Linux und macOS einsetzbar.

ESXi-Host

ESX und ESXi sind Hypervisoren vom Typ 1 von VMware, dem Anbieter für Virtualisierungslösungen. Mit ESXi ist es möglich, physische Host Ressourcen, wie beispielsweise Arbeitsspeicher, CPU, Netzwerk Verbindungen oder Speicherplatz unterschiedlichen virtuellen Maschinen zuzuweisen.

ESX und ESXi sind Bezeichnungen von Hypervisoren von VMware zur Virtualisierung von Servern, Rechenzentren und Rechnersystemen. ESX steht hierbei für “Elastic Sky X”, ESXi bedeutet “Elastic Sky X integrated”. Beide sind Hypervisoren von Typ 1, oder anders formuliert Bare-Metal Hypervisoren oder native Hypervisoren.