Automatisierte Berichte über die Nutzung von Exchange-Postfächern mit PowerShell

Melden
  1. Einleitung
  2. Verbindung zu Exchange herstellen
  3. Daten über Postfächer abfragen
  4. Bericht formatieren und exportieren
  5. Automatisierung der Berichtserstellung
  6. Zusätzliche Tipps
  7. Fazit

Einleitung

Das Erstellen automatisierter Berichte zur Nutzung von Exchange-Postfächern ist eine wichtige Aufgabe für Administratoren,

die den Überblick über Speicherplatz, Aktivität und Benutzerverhalten behalten möchten. PowerShell bietet hierzu umfangreiche

Möglichkeiten, da die Exchange-Management-Shell bzw. das Exchange Online PowerShell-Modul speziell für solche Aufgaben konzipiert sind.

Im Folgenden wird erläutert, wie man mit PowerShell Berichte über die Nutzung von Exchange-Postfächern erstellen, automatisieren und exportieren kann.

Verbindung zu Exchange herstellen

Um Daten über Postfächer abzurufen, muss zunächst eine Verbindung mit dem Exchange Server oder Exchange Online hergestellt werden.

Bei einer lokalen Exchange-Umgebung geschieht dies meist durch das Öffnen der Exchange Management Shell, da dort die notwendigen Cmdlets bereits geladen sind.

Für Exchange Online wird über PowerShell eine separate Verbindung aufgebaut mittels spezieller Module wie ExchangeOnlineManagement.

Import-Module ExchangeOnlineManagementConnect-ExchangeOnline -UserPrincipalName admin@deinedomain.de

Dabei muss man sich mit entsprechenden Administratorrechten authentifizieren. Nach erfolgreicher Verbindung stehen Cmdlets wie Get-Mailbox und Get-MailboxStatistics zur Verfügung.

Daten über Postfächer abfragen

Um aussagekräftige Berichte zu erstellen, lässt sich die Nutzung der Postfächer mit verschiedenen Cmdlets auslesen.

Get-Mailbox liefert Informationen zu den Postfächern selbst, etwa Namen, Größe, Typ und Attribute.

Get-MailboxStatistics hingegen liefert detaillierte Nutzungsdaten wie Postfachgröße, Anzahl der Elemente, zuletzt angemeldeter Benutzer, und weitere.

Ein typisches Abfragebeispiel kombiniert beide Cmdlets, um umfassende Informationen zu erhalten:

$mailboxes = Get-Mailbox -ResultSize Unlimited$result = foreach ($mbx in $mailboxes) { $stats = Get-MailboxStatistics -Identity $mbx.Identity @{ DisplayName = $mbx.DisplayName PrimarySmtpAddress = $mbx.PrimarySmtpAddress ItemCount = $stats.ItemCount TotalItemSize = $stats.TotalItemSize.ToString() LastLogonTime = $stats.LastLogonTime }}$result

Dieser Code holt für alle Postfächer deren Namen, SMTP-Adresse, Anzahl der Elemente, Gesamtgröße des Postfachs sowie die letzte Anmeldezeit.

Die Nutzung von ermöglicht eine einfache und strukturierte Weiterverwendung der Daten.

Bericht formatieren und exportieren

Die gesammelten Daten sind bereits in einer leicht weiterverarbeitbaren Form. Für automatisierte Berichte empfiehlt sich ein Export in ein gut lesbares Format wie CSV, XLSX oder HTML.

$result | Export-Csv -Path "C:\Reports\PostfachNutzung.csv" -NoTypeInformation -Encoding UTF8

Möchte man den Bericht schön formatiert als HTML-Datei ausgeben, eignet sich das Cmdlet ConvertTo-Html:

$htmlReport = $result | ConvertTo-Html -Title "Postfachnutzungsbericht" -PreContent "<h1>Postfachnutzung Exchange</h1>"$htmlReport | Out-File "C:\Reports\PostfachNutzung.html" -Encoding UTF8

Das erzeugt eine übersichtliche HTML-Seite, die direkt im Browser betrachtet werden kann.

Automatisierung der Berichtserstellung

Um die Berichte regelmäßig und automatisch zu erstellen, kann man das PowerShell-Skript in den Windows Task Scheduler einbinden.

Dort kann man einen wiederkehrenden Task anlegen, der beispielsweise täglich oder wöchentlich das Skript startet und den Bericht aktuell hält.

Wichtig ist, die Authentifizierung gegen Exchange Online dabei automatisiert zu lösen, beispielsweise durch gespeicherte Anmeldeinformationen oder App-Registrierungen.

Eine beispielhafte Vorgehensweise ist, ein PowerShell-Skript zu schreiben, das zuerst die Verbindung herstellt, die Daten abruft, exportiert und sich dann wieder abmeldet:

Import-Module ExchangeOnlineManagementConnect-ExchangeOnline -UserPrincipalName admin@deinedomain.de -ShowProgress $false$mailboxes = Get-Mailbox -ResultSize Unlimited$result = foreach ($mbx in $mailboxes) { $stats = Get-MailboxStatistics -Identity $mbx.Identity @{ DisplayName = $mbx.DisplayName PrimarySmtpAddress = $mbx.PrimarySmtpAddress ItemCount = $stats.ItemCount TotalItemSize = $stats.TotalItemSize.ToString() LastLogonTime = $stats.LastLogonTime }}$result | Export-Csv -Path "C:\Reports\PostfachNutzung.csv" -NoTypeInformation -Encoding UTF8Disconnect-ExchangeOnline -Confirm:$false

Dieses Skript kann dann im Task Scheduler mit Angabe des Skriptpfades als Aktion eingeplant werden. So erhält man automatisch aktualisierte Berichte, ohne manuell eingreifen zu müssen.

Zusätzliche Tipps

Für weitergehende Berichte können zusätzliche Attribute abgefragt werden, etwa Postfachberechtigungen, Quotas, Inaktivitätszeiten oder Zugriffsmuster.

Auch der Einsatz von PowerShell-Modulen wie PnP oder die Integration in Microsoft Graph API kann erweiterte Metriken bieten.

Für eine bessere Lesbarkeit der Berichte empfiehlt sich die Nachbearbeitung mit Tools wie Excel oder Power BI, wo die CSV-Daten importiert und visuell aufbereitet werden können.

Außerdem sollte man bei großen Umgebungen das Abfragen in Batches oder mit Filtern handhaben, um die Performance nicht zu beeinträchtigen.

Ein Planungsvorgang im Task Scheduler kann zusätzlich Fehlerprotokollierung beinhalten, um im Problemfall schnell reagieren zu können.

Fazit

PowerShell ermöglicht eine effiziente und flexible Erstellung automatisierter Berichte zur Nutzung von Exchange-Postfächern.

Von der Verbindung zu Exchange Online über das gezielte Abfragen von Nutzungsdaten bis hin zum Export als CSV- oder HTML-Datei kann der gesamte Prozess mit wenigen Zeilen Code abgebildet werden.

Die Integration in den Task Scheduler vervollständigt die Automatisierung, sodass Administratoren jederzeit aktuelle Informationen zur Exchange-Umgebung parat haben.

0
0 Kommentare