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

Automatische IP-Adressen Link-Local APIPA deaktivieren

Automatische IP-Adressen Link-Local, TCP/IP-Adressierung APIPA deaktivieren wenn kein DHCP-Server verfügbar ist

Automatische IP-Adressen Link-Local APIPA deaktivieren

ZEROCONF gemeinhin als IPv4 Link-Local (IPv4LL) und Automatic Private IP Addressing (APIPA) nutzt den Bereich 169.254.0.0/16 für Netzwerk-Adressen. Diese per Default aktivierte APIPA Adressierung ist von Systemadministratoren oft nicht erwünscht.

Die meisten Windows Versionen und Linux-Distribution verwenden die Zero-Network-Konfiguration (ZEROCONF) um das Netzwerk ohne zentrale Instanz automatisch zu konfigurieren, also ohne die Notwendigkeit des Vorhandenseins eines DHCP oder DNS-Server in einem Netzwerk. ZEROCONF ist ein IETF-Organ, das eine Reihe von dynamischen Protokolle plant und koordiniert, es soll einem Betriebssystem die automatische Netzwerk Konfiguration ermöglichen.

Unter Windows kann die automatische adressierung, APIPA ZEROCONF (Link-Local) mit folgender Registrierung deaktiviert werden, dazu die Eingabeaufforderung als Administrator öffnen und die REG Zeile durch Copy & Paste ausführen.

REG ADD HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v IPAutoconfigurationEnabled /t REG_DWORD /d "00000000" /f

Bei Linux wird die Datei network editiert und ZEROCONF= YES oder NO eingefügt.

$ sudo vi /etc/sysconfig/network

NOZEROCONF=yes

Bei RHEL/Fedora/CentOS wird die Konfiguration wie folgt übernommen.

$ service network restart

avahi-daemon Konfiguration ändern

Für Linux Mint und Ubuntu muss die avahi-daemon Konfiguration geändert werden.

$ sudo vi /etc/default/avahi-daemon

AVAHI_DAEMON_DETECT_LOCAL=0

Bei Linux Mint / Ubuntu den avahi-daemon restarten.

$ sudo /etc/init.d/avahi-daemon restart

Den avahi-daemon beim boot nicht automatisch starten.

$ update-rc.d -f avahi-daemon remove

Für Red Hat und CentOS.

$ chkconfig avahi-daemon off

Bei Debian 10 (buster) muss die automatisch konfigurierte Adresse in /etc/network/interfaces entfernt werden.

allow-hotplug eth1
iface eth1 inet manual
iface eth1 inet6 static
    address fe80::a
    netmask 64

iface eth1 inet6 static
    address 2001:db8::a
    netmask 64
    gateway fe80::b
    dns-server 2001:db8::c

    post-up ip address del fe80::a:b:c:d/64 dev eth1

Netzwerk Zero-Konfiguration

Network Zero-Configuration (Zeroconf), auch bekannt als APIPA und Link-local, ist eine Reihe von Technologien, die automatisch ein nutzbares Computernetzwerk auf Basis der Internet Protocol Suite (TCP/IP) erstellen, wenn Computer oder Netzwerkperipheriegeräte miteinander verbunden sind. Es sind keine manuellen Bedienereingriffe oder spezielle Konfigurationsserver erforderlich. Ohne Zeroconf muss ein Netzwerkadministrator Netzwerkdienste wie Dynamic Host Configuration Protocol (DHCP) und Domain Name System (DNS) einrichten oder die Netzwerkeinstellungen jedes Computers manuell konfigurieren.

Zeroconf basiert auf drei Kerntechnologien: automatische Zuweisung numerischer Netzwerkadressen für vernetzte Geräte, automatische Verteilung und Auflösung von Computer-Hostnamen und automatische Lokalisierung von Netzwerkdiensten wie Druckgeräten.