buchachon - stock.adobe.com

Verfügbarkeit von Exchange Online per PowerShell testen

PowerShell automatisiert Monitoring und Verwaltung von Exchange Online effizient. So er-kennen IT-Teams früh Probleme, optimieren Ressourcen und sichern den E-Mail-Betrieb.

Die Zustandsprüfungen von Exchange Online dienen nicht nur der routinemäßigen Wartung, sondern auch dazu, größeren Problemen vorzubeugen und die Ordnung in der von Microsoft gehosteten E-Mail-Plattform aufrechtzuerhalten.

PowerShell verbessert die Überwachung durch die Automatisierung von Aufgaben, wodurch manuelle Arbeit reduziert wird, und trägt dazu bei, Vertrauen in die Zuverlässigkeit des Systems zu schaffen. Ein ausgeklügeltes Skript kann einen klaren Überblick über Exchange Online geben, um zu sehen, wo alles ordnungsgemäß funktioniert und wo Hilfe benötigt wird. Diese Einblicke ermöglichen es Ihnen, frühzeitig zu handeln, um Ressourcen anzupassen oder ungewöhnliche Aktivitäten zu untersuchen. PowerShell ist nicht nur ein Tool – es ist Ihr Verteidigungsmechanismus an vorderster Front.

In diesem Artikel erfahren Sie, wie Sie PowerShell einrichten und verwenden, um Exchange Online-Zustandsprüfungen zu automatisieren, Probleme zu erkennen und Berichte zu erstellen, damit das E-Mail-System zuverlässig funktioniert.

Vorteile der Verwendung von PowerShell zur Überprüfung von Exchange Online

Wenn es um die Überwachung von Exchange Online geht, bietet PowerShell mehrere Vorteile:

  • Automatisierte Planung. Sie können PowerShell-Skripte so planen, dass sie in bestimmten Intervallen ausgeführt werden, wodurch manuelle Eingriffe überflüssig werden und eine konsistente Überwachung gewährleistet ist.
  • Detaillierte Systemeinblicke. PowerShell kann auf wichtige Metriken in Exchange Online zugreifen, zum Beispiel Nachrichtenverfolgungsprotokolle und Postfachstatistiken, um Anomalien aufzudecken und Nutzungstrends in Ihrer Exchange Online-Infrastruktur zu verfolgen.
  • Individuelle Überwachung. Sie können Skripte für bestimmte Bereiche anpassen, beispielsweise Postfachwachstum, Benutzeraktivität oder Zustellungsverzögerungen, um zu steuern, was überwacht werden soll und wann Warnmeldungen ausgelöst werden sollen.
  • Berichtsfunktionen. Sie können Berichte für Audits oder zum Austausch von Informationen mit Stakeholdern erstellen.

PowerShell bietet umfassende Tools zur effektiven Überwachung und Verwaltung Ihrer Exchange Online-Umgebung.

Voraussetzungen für die Verwendung von PowerShell mit Exchange Online

Bevor Sie mit der Überwachung von Exchange Online mit PowerShell beginnen können, müssen Sie einige Voraussetzungen berücksichtigen.

Stellen Sie zunächst sicher, dass Sie über die erforderlichen Berechtigungen für den Zugriff auf und die Überwachung von Exchange Online verfügen. In der Regel müssen Sie dazu Mitglied der Exchange-Online-Administratorrolle sein oder Ihrem Konto die erforderlichen Exchange-Online-Verwaltungsrollen zuweisen.

Als Nächstes müssen Sie das Exchange Online PowerShell V3 (EXO V3)-Modul installieren, um eine Verbindung zu Ihrer Exchange-Online-Umgebung herzustellen und darin zu arbeiten.

Zuletzt sollten Sie sich grundlegende Kenntnisse über PowerShell-Skripte aneignen. Sie können vorgefertigte Skripte online finden, aber es ist hilfreich zu wissen, wie man Skripte anpasst und modifiziert. Wenn Sie die Grundlagen von PowerShell wie Variablen, Schleifen (Loops)und bedingte Anweisungen lernen, können Sie fortgeschrittenere Überwachungsskripte erstellen.

Um PowerShell mit Exchange Online zu verwenden, müssen Sie Folgendes tun:

  • Richten Sie Ihre Umgebung ein: Sie benötigen eine kompatible Windows-Umgebung, um PowerShell mit Exchange Online zu verwenden. Das empfohlene Betriebssystem ist Windows 10 oder 11.
  • Installieren Sie die erforderliche Software:
    • PowerShell: Installieren Sie die neueste Version von PowerShell. Zum Zeitpunkt der Veröffentlichung ist PowerShell 7.4 oder höher die neueste Version. Windows PowerShell 5.1 funktioniert ebenfalls, aber Microsoft empfiehlt die neuere Open-Source-Version von PowerShell.
    • Microsoft .NET Framework: Exchange Online erfordert .NET Framework, insbesondere Version 4.7.1 oder höher.
    • PowerShellGet- und PackageManagement-Module: Diese Module sind für REST-API-basierte Verbindungen erforderlich, die vom EXO V3-Modul verwendet werden.
  • Installieren Sie das EXO V3-Modul: Das PowerShell-Modul bietet Cmdlets für die Verwaltung von Exchange Online. Sie können es mit dem PowerShell-Befehl installieren:
Install-Module -Name ExchangeOnlineManagement
  • Ausführungsrichtlinie festlegen: Möglicherweise müssen Sie die Ausführungsrichtlinie in PowerShell festlegen, um die Ausführung von Skripten zu ermöglichen. Dazu können Sie das Cmdlet Set-ExecutionPolicy verwenden. Seien Sie vorsichtig bei der Festlegung dieser Richtlinie, da sie Auswirkungen auf die Sicherheit haben kann. Eine häufig verwendete Richtlinie für diesen Zweck ist RemoteSigned.
  • Mit Exchange Online verbinden: Verwenden Sie das Cmdlet Connect-ExchangeOnline, um eine Verbindung mit Exchange Online herzustellen. Das System fordert Sie auf, Ihre Exchange-Online-Anmeldeinformationen einzugeben.

Beachten Sie, dass Sie für die aktuellsten Anweisungen immer die neueste Dokumentation von Microsoft heranziehen sollten. Außerdem sind für diese Schritte möglicherweise Administratorrechte erforderlich. Vergewissern Sie sich, dass Sie die Auswirkungen jedes Schritts verstehen, insbesondere wenn Sie Systemeinstellungen oder Ausführungsrichtlinien ändern.

Überwachen des E-Mail-Flusses in Exchange Online mit PowerShell

Die Überwachung des E-Mail-Flusses in Exchange Online ist entscheidend, um sicherzustellen, dass E-Mails korrekt gesendet und empfangen werden. PowerShell bietet mehrere Cmdlets, mit denen Sie den E-Mail-Fluss überprüfen und eventuell auftretende Probleme beheben können. Eines der wichtigsten Cmdlets für diese Aufgabe ist Get-MessageTraceV2, das Ersatz für das veraltete Cmdlet Get-MessageTrace, das Microsoft im September 2025 eingestellt hat.

Mit Get-MessageTraceV2 können Sie Informationen zu Nachrichten abrufen, die innerhalb eines bestimmten Zeitraums gesendet oder empfangen wurden. Sie können die Ergebnisse nach verschiedenen Kriterien filtern, zum Beispiel nach Absender, Empfänger, Betreff oder Nachrichtenstatus. Durch regelmäßiges Ausführen von Get-MessageTraceV2 und Analysieren der Ergebnisse können Sie potenzielle Probleme mit dem E-Mail-Fluss identifizieren und geeignete Maßnahmen ergreifen. Im Folgenden finden Sie Beispiele für die Verwendung von Get-MessageTraceV2.

# Retrieve information about messages sent or received in the last 24 hours
Get-MessageTraceV2 `
    -StartDate (Get-Date).AddDays(-1) `
    -EndDate (Get-Date)

# Retrieve messages sent by a specific sender in the last 24 hours
Get-MessageTraceV2 `
-SenderAddress [email protected] `
-StartDate (Get-Date).AddDays(-1) `
-EndDate (Get-Date)

# Retrieve information about messages that failed in the last 24 hours
Get-MessageTraceV2 `
-DeliveryStatus Failed `
    -StartDate (Get-Date).AddDays(-1) `
-EndDate (Get-Date)

Mit Get-MessageTraceV2 können Sie Überprüfungen automatisieren und Einträge basierend auf Zustellungsfehlern exportieren. Das folgende Skript ruft die Aufzeichnungen der letzten sieben Tage mit fehlgeschlagenen Zustellungen ab, exportiert sie zur weiteren Überprüfung als CSV-Datei und trennt dann die Verbindung zu Exchange Online.

Connect-ExchangeOnline `
-UserPrincipalName [email protected] `
-ShowProgress $true
$endDate = Get-Date
$startDate = $endDate.AddDays(-7)
$failedMessages = Get-MessageTraceV2 `
-StartDate $startDate `
-EndDate $endDate | `

Where-Object { $_.DeliveryStatus -eq „Failed“ }
if ($failedMessages) {
    $failedMessages | Export-Csv `
        -Path „C:\Temp\FailedMessages.csv“ `
        -NoTypeInformation
} else {
    Write-Host „No failed messages found in the last seven days.“
}
Disconnect-ExchangeOnline -Confirm:$false

Bewertung der Postfachgrößen mit PowerShell

Neben Get-MessageTraceV2 bietet PowerShell auch andere Cmdlets wie Get-EXOMailboxStatistics – den Ersatz für das Cmdlet Get-MailboxStatistics – zur Überwachung der Postfachnutzung in Exchange Online.

Get-EXOMailboxStatistics liefert wertvolle Informationen über Postfachgrößen, Elementanzahlen und letzte Anmeldezeiten. Durch die Überwachung dieser Metriken können Sie proaktiv Leistungsprobleme und Speicherbeschränkungen angehen, die sich auf die Benutzererfahrung auswirken können.

Im Folgenden finden Sie Beispiele für die Verwendung des Befehls Get-EXOMailboxStatistics.

# Get mailbox statistics for a specific user
Get-EXOMailboxStatistics `
    -Identity [email protected]

# Get specific mailbox statistics for a user
Get-EXOMailboxStatistics `

-Identity [email protected] | `
        Select DisplayName, LastLogonTime, TotalItemSize

Sie können Get-EXOMailboxStatistics auch in einem PowerShell-Skript verwenden, um das Abrufen von Postfächern zu automatisieren und anschließend zu überprüfen, ob die Gesamtgröße der Elemente einen festgelegten Schwellenwert überschreitet.

Das Skript exportiert die Liste aller Postfächer, die den Schwellenwert von 10 Gigabyte überschreiten, in eine CSV-Datei.

Connect-ExchangeOnline `
    -UserPrincipalName [email protected] `
    -ShowProgress $true

$mailboxStats = Get-EXOMailbox -ResultSize Unlimited | ForEach-Object {
    $stats = Get-EXOMailboxStatistics -Identity $_.UserPrincipalName
    [PSCustomObject]@{

DisplayName       = $_.DisplayName
    TotalItemSizeMB   = [math]::Round(($stats.TotalItemSize.ToMB()), 0)
        ItemCount         = $stats.ItemCount
        LastLogonTime     = $stats.LastLogonTime
    }
}

$sizeThreshold = 10240  # 10 GB


$largeMailboxes = $mailboxStats | Where-Object {
    $_.TotalItemSizeMB -gt $sizeThreshold
}

if ($largeMailboxes) {
    $largeMailboxes | Export-Csv `

-Path „C:\Temp\LargeMailboxes.csv“ -NoTypeInformation
} else {
    Write-Host „No large mailboxes found.“
}

Verfolgen von Benutzeraktivitäten in Exchange Online mit PowerShell

Die Überwachung von Benutzeraktivitäten in Exchange Online ist für Sicherheits-, Compliance- und Fehlerbehebungszwecke von entscheidender Bedeutung. PowerShell bietet mehrere Cmdlets zur Überwachung von Benutzeraktivitäten und zur Verfolgung verdächtiger oder nicht autorisierter Aktionen.

Das Cmdlet Search-MailboxAuditLog wurde zuvor verwendet, um Mailbox-Überwachungsprotokolle nach bestimmten Benutzeraktivitäten zu durchsuchen, beispielsweise nach gelöschten Nachrichten, Mailbox-Anmeldungen oder Zugriffen durch externe Parteien. Microsoft hat dieses Cmdlet jedoch zugunsten des Cmdlets Search-UnifiedAuditLog abgeschafft, das eine einheitliche Ansicht der Überwachungsereignisse in allen Microsoft-365-Diensten bietet.

Das folgende Skript überprüft eine Reihe von Mailbox-bezogenen Aktivitäten eines Benutzers.

# Search for Exchange mailbox audit events in the last seven days $startDate = (Get-Date).AddDays(-7)
$endDate = Get-Date
Search-UnifiedAuditLog `
-StartDate $startDate `
-EndDate $endDate `
-UserIds „[email protected]“ `
-RecordType ExchangeMailbox `
-Operations SendAs, HardDelete, SoftDelete `

PowerShell bietet weitere Cmdlets, die für die Verwaltung von Exchange Online optimiert sind, wie unter anderem Get-EXOMailboxPermission und Get-EXOMailboxFolderPermission, mit denen Informationen zu Postfach- und Ordnerberechtigungen abgerufen werden können. Diese Cmdlets tragen dazu bei, dass Benutzer über die entsprechenden Zugriffsrechte und Berechtigungen für Postfächer und deren Inhalte verfügen.

# Get mailbox permissions for a specific user
Get-EXOMailboxPermission -Identity [email protected]

# Get non-default mailbox permissions for a user
Get-EXOMailboxPermission -Identity [email protected] | `
Where-Object {
    ($_.IsInherited -eq $false) -and ($_.User -notlike „NT AUTHORITY\SELF“)
}

# Get folder permissions for a specific folder in a user's mailbox
Get-EXOMailboxFolderPermission -Identity [email protected]:\Inbox

# Get folder permissions for all folders in a user's mailbox
$mailbox = „[email protected]“
$folders = Get-MailboxFolderStatistics -Identity $mailbox | `
    Select-Object -ExpandProperty FolderPath
foreach ($folder in $folders) {
    Get-EXOMailboxFolderPermission `
        -Identity „$mailbox`:$folder“ | `
        Select-Object @{Name=‚FolderPath‘;Expression={$folder}}, User, AccessRights
}

Erstellen eines Exchange Online-Berichts mit PowerShell

Das Erstellen von Berichten zu Exchange Online-Aktivitäten ist für Audits, Compliance und Kommunikationszwecke sehr wertvoll. PowerShell kann benutzerdefinierte Berichte basierend auf bestimmten Kriterien und Anforderungen erstellen.

Um einen Bericht über Exchange-Aktivitäten zu erstellen, können Sie PowerShell-Cmdlets wie Get-MessageTraceV2, Get-EXOMailboxStatistics und Search-UnifiedAuditLog verwenden. Durch Kombinieren der Ausgaben dieser Cmdlets und Formatieren der Daten mit den Formatierungs-Cmdlets von PowerShell können Sie umfassende Berichte erstellen, die Informationen wie E-Mail-Flussstatistiken, Postfachgrößen und Benutzeraktivitäten enthalten.

PowerShell kann die Berichte in verschiedenen Formaten wie CSV oder HTML exportieren, um die Weitergabe der Informationen an Interessengruppen oder den Import in andere Systeme zur weiteren Analyse zu vereinfachen. Durch die regelmäßige Erstellung und Überprüfung dieser Berichte können Sie sich über die Nutzung und Leistung Ihrer Exchange Online-Umgebung informieren, Trends oder Anomalien erkennen und fundierte Entscheidungen zur Optimierung des Betriebs treffen.

 Das folgende Beispielskript überprüft den E-Mail-Fluss und die Postfachstatistiken der letzten sieben Tage und exportiert sie in eine CSV-Datei:

Connect-ExchangeOnline -UserPrincipalName [email protected]
$mailboxes = Get-EXOMailbox -ResultSize Unlimited
$report = foreach ($mailbox in $mailboxes) {
    $mailboxStats = Get-EXOMailboxStatistics -Identity $mailbox.UserPrincipalName |
        Select-Object DisplayName, TotalItemSize, ItemCount
    $messageTrace = Get-MessageTraceV2 `
        -RecipientAddress $mailbox.UserPrincipalName `
        -StartDate (Get-Date).AddDays(-7) `
        -EndDate (Get-Date) | Measure-Object | Select-Object -Property Count
    $auditLogs = Search-UnifiedAuditLog `
        -UserIds $mailbox.UserPrincipalName `
        -StartDate (Get-Date).AddDays(-7) `
        -EndDate (Get-Date) `
        -RecordType ExchangeMailbox `
        -Operations SendAs, HardDelete, SoftDelete | Measure-Object | `
        Select-Object -Property Count
    [PSCustomObject]@{
           UserPrincipalName    = $mailbox.UserPrincipalName
           DisplayName          = $mailboxStats.DisplayName
           TotalItemSize        = $mailboxStats.TotalItemSize
           ItemCount            = $mailboxStats.ItemCount
           MessagesLast7Days    = $messageTrace.Count
           AuditLogsLast7Days   = $auditLogs.Count
    }
}
$report | Export-Csv -Path „C:\Temp\ExchangeReport.csv“ -NoTypeInformation
Disconnect-ExchangeOnline -Confirm:$false

Sie können den PowerShell-Code auch ändern, um den Bericht als HTML zu exportieren:

$report | ConvertTo-Html `
-Title "Exchange Activities Report" `
-Body "<h1>Exchange Online Activities Report</h1>" | `
Out-File "C:\Temp\ExchangeActivitiesReport.html"

Sie können dieses Skript weiter anpassen, um weitere Details in den Bericht aufzunehmen, zum Beispiel die fehlgeschlagenen E-Mail-Zustellungen der letzten sieben Tage.

Connect-ExchangeOnline -UserPrincipalName [email protected]
$mailboxes = Get-EXOMailbox -ResultSize Unlimited
$report = foreach ($mailbox in $mailboxes) {
    $mailboxStats = Get-EXOMailboxStatistics `
        -Identity $mailbox.UserPrincipalName |
        Select-Object DisplayName, TotalItemSize, ItemCount
    $messageTrace = Get-MessageTraceV2 `
        -RecipientAddress $mailbox.UserPrincipalName `
        -StartDate (Get-Date).AddDays(-7) `
        -EndDate (Get-Date) | Measure-Object | Select-Object -Property Count
$auditLogs = Search-UnifiedAuditLog `
        -UserIds $mailbox.UserPrincipalName `
        -StartDate (Get-Date).AddDays(-7) `
        -EndDate (Get-Date) `
        -RecordType ExchangeMailbox `
        -Operations SendAs, HardDelete, SoftDelete | Measure-Object | Select-Object -Property Count
[PSCustomObject]@{
        UserPrincipalName    = $mailbox.UserPrincipalName
        DisplayName          = $mailboxStats.DisplayName
        TotalItemSize        = $mailboxStats.TotalItemSize
        ItemCount            = $mailboxStats.ItemCount
        MessagesLast7Days    = $messageTrace.Count
        AuditLogsLast7Days   = $auditLogs.Count
    }
}
$failedMessages = Get-MessageTraceV2 `
      -StartDate (Get-Date).AddDays(-7) `
      -EndDate (Get-Date) | Where-Object { $_.Status -eq „Failed“ }
$reportHtml = $report | ConvertTo-Html `
      -Title „Exchange Activities Report“ `
      -Body "<h1>Exchange Online Activities Report</h1>"
$failedMessagesHtml = $failedMessages | ConvertTo-Html `
      -Title "Failed Messages" `
      -Body "<h1>Failed Messages</h1>" -As List
$finalHtmlReport = $reportHtml + $failedMessagesHtml
$finalHtmlReport | Out-File "C:\Temp\ExchangeActivitiesReport.html"

PowerShell-Automatisierung für die Zustandsüberprüfung von Exchange Online

PowerShell ist dank seiner Automatisierung, Flexibilität und umfangreichen Berichtsfunktionen ein leistungsstarkes Tool zur Aufrechterhaltung des Zustands von Exchange Online. Das EXO V3-Modul ist unverzichtbar, um Überwachungsaufgaben zu optimieren, wertvolle Erkenntnisse zu gewinnen und potenzielle Probleme proaktiv anzugehen.

 Ob es um die Überwachung des E-Mail-Flusses oder der Benutzeraktivitäten geht – PowerShell bietet eine umfassende Reihe von Cmdlets, mit denen Sie Ihre Exchange Online-Infrastruktur effektiv überwachen und verwalten können. Investieren Sie Zeit in das Erlernen von PowerShell und die Verwendung des EXO V3-Moduls, um die Vorteile einer effizienten Überwachung und Verwaltung von Exchange Online zu nutzen.

Erfahren Sie mehr über Datenverwaltung