Microsoft Exchange Server 2019 Exchange Management Shell – essential PowerShell commands for administrators
Exchange Management Shell commands for Exchange Server 2019: mail queues, message tracking, mailbox forwarding, PST exports, address lists, GAL, transport rules, connectors, permissions, databases, certificates, health checks and daily Exchange administration.
Important: Exchange Server 2019 is out of support
Exchange Server 2019 reached end of support on October 14, 2025. This article is a practical reference for existing Exchange 2019 environments, not a recommendation for new deployments. Evaluate Exchange Server Subscription Edition or migration to Microsoft 365.
Exchange Management Shell öffnen
Die Exchange Management Shell stellt die Exchange-Cmdlets bereit. Viele Beispiele hier gelten ausdrücklich für Exchange Server on-premises; Exchange Online verwendet teilweise andere Cmdlets, Parameter und Verbindungsmodelle.
Grundbefehle
`Get-ExchangeServer` listet Exchange-Server. `Get-ExchangeServer | Format-List Name,Edition,AdminDisplayVersion` liefert eine schnelle Versionsübersicht. Mit `Get-Command *-Mailbox*`, `Get-Help <Cmdlet> -Full` und `Get-Help <Cmdlet> -Examples` findet man verfügbare Befehle und Beispiele.
Get-ExchangeServer
Get-ExchangeServer | Format-List Name,Edition,AdminDisplayVersion
Get-Command *-Mailbox*
Get-Help Get-Mailbox -Examples
Mail Queue prüfen
`Get-queue` ist einer der wichtigsten ersten Befehle bei Mailflussproblemen. Er zeigt Warteschlangen, Status, messageszahl und NextHop. Mit `Get-queue -Server EX01` lässt sich ein bestimmter Transportserver prüfen.
Get-Queue
Get-Queue -Server EX01
Get-Queue | Sort MessageCount -Descending
Get-Queue -Filter "Status -eq 'Retry'"
Nachrichten in einer Queue untersuchen
Mit `Get-Message -queue EX01\123` werden messages einer queue angezeigt. Für gezielte Suchen können Filter verwendet werden, beispielsweise `Get-Message -Server EX01 -Filter "FromAddress -eq 'sender@example.org'"`.
Get-Message -Queue EX01\123
Get-Message -Server EX01 -Filter "FromAddress -eq 'sender@example.org'"
Queues und Nachrichten verwalten
`Suspend-queue` pausiert eine queue, `Resume-queue` setzt sie fort. Für einzelne messages gibt es unter anderem `Suspend-Message`, `Resume-Message` und `Remove-Message`. Vor destruktiven Aktionen immer zuerst queue und Nachricht eindeutig prüfen.
Suspend-Queue -Identity EX01\123
Resume-Queue -Identity EX01\123
Suspend-Message -Identity EX01\123\456
Resume-Message -Identity EX01\123\456
Remove-Message -Identity EX01\123\456 -WithNDR $false
Message Tracking
`Get-MessageTrackingLog` ist das zentrale Werkzeug für die messagesverfolgung. Suche möglichst mit Zeitfenster sowie Absender, Empfänger, Betreff oder Message-ID. Beispiel: `Get-MessageTrackingLog -Start (Get-Date).AddHours(-4) -End (Get-Date) -Sender user@example.org`.
$start=(Get-Date).AddHours(-4)
$end=Get-Date
Get-MessageTrackingLog -Start $start -End $end -Sender user@example.org
Get-MessageTrackingLog -Start $start -End $end -Recipients recipient@example.org -MessageSubject "Test"
Message Tracking lesbar ausgeben
Mit `Select` und `Format-Table` wird die Ausgabe übersichtlich: `Get-MessageTrackingLog ... | Select Timestamp,EventId,Source,Sender,Recipients,MessageSubject,MessageId | Format-Table -AutoSize`. Ergebnisse können mit `Export-Csv` gespeichert werden.
Get-MessageTrackingLog -Start (Get-Date).AddHours(-4) -End (Get-Date) |
Select Timestamp,EventId,Source,Sender,Recipients,MessageSubject,MessageId |
Format-Table -AutoSize
Mailboxen suchen und anzeigen
`Get-Mailbox`, `Get-Mailbox -Identity user@example.org`, `Get-Mailbox -ResultSize Unlimited`, `Get-Recipient` und `Get-Mailbox -Filter` gehören zum täglichen Werkzeugkasten.
Mailboxen anlegen und entfernen
Je nach Szenario sind `New-Mailbox`, `Disable-Mailbox`, `Connect-Mailbox`, `Remove-Mailbox` und `Set-Mailbox` relevant. Vor destruktiven Befehlen immer Identität und Sicherungsstatus prüfen.
Mailumleitung hinterlegen
Für forwardingen stehen `-ForwardingAddress` und `-ForwardingSmtpAddress` zur Verfügung. Mit `-DeliverToMailboxAndForward $true` bleibt die Nachricht im ursprünglichen mailbox und wird zusätzlich weitergeleitet. Beispiel: `Set-Mailbox user -ForwardingSmtpAddress 'smtp:target@example.net' -DeliverToMailboxAndForward $true`. Externe automatische forwardingen sollten aus Sicherheits- und Compliance-Gründen bewusst kontrolliert werden.
Set-Mailbox user -ForwardingSmtpAddress 'smtp:target@example.net' -DeliverToMailboxAndForward $true
Get-Mailbox user | Format-List ForwardingAddress,ForwardingSmtpAddress,DeliverToMailboxAndForward
Weiterleitung entfernen
Mit `Get-Mailbox user | Format-List ForwardingAddress,ForwardingSmtpAddress,DeliverToMailboxAndForward` zuerst den Ist-Zustand prüfen. Danach die nicht mehr benötigten forwardingseigenschaften auf `$null` setzen.
PST-Export
Für On-Premises-Exchange wird `New-MailboxExportRequest` verwendet. Die Mailbox Import Export Role ist standardmäßig keiner Rollengruppe zugewiesen. Außerdem benötigt Exchange Trusted Subsystem Zugriff auf die Ziel-Netzwerkfreigabe. Beispiel: `New-MailboxExportRequest -Mailbox user@example.org -FilePath \\FILE01\PST$\user.pst`.
New-MailboxExportRequest -Mailbox user@example.org -FilePath \\FILE01\PST$\user.pst
Get-MailboxExportRequest -Mailbox user@example.org
Get-MailboxExportRequest | Get-MailboxExportRequestStatistics
PST-Export überwachen
`Get-MailboxExportRequest -Mailbox user@example.org` zeigt den Status. Mit `Get-MailboxExportRequest | Get-MailboxExportRequestStatistics` erhält man Details. Alte abgeschlossene Requests können mit `Remove-MailboxExportRequest` entfernt werden.
Adresslisten erstellen
`New-AddressList` erstellt address lists auf Basis von Empfängerfiltern. Beispiel: `New-AddressList -Name 'Standort Koblenz' -RecipientFilter "CustomAttribute1 -eq 'Koblenz'"`. Filter vorab sorgfältig testen.
New-AddressList -Name 'Standort Koblenz' -RecipientFilter "CustomAttribute1 -eq 'Koblenz'"
Set-AddressList -Identity 'Standort Koblenz'
Update-AddressList -Identity 'Standort Koblenz'
Adresslisten ändern und aktualisieren
`Set-AddressList` ändert eine bestehende Liste. `Update-AddressList` aktualisiert deren enthaltene Empfänger.
Global Address List
Mit `Get-GlobalAddressList` werden GALs angezeigt. `Update-GlobalAddressList -Identity 'Default Global Address List'` aktualisiert die Empfänger der GAL.
Get-GlobalAddressList
Update-GlobalAddressList -Identity 'Default Global Address List'
Transportregeln
`New-TransportRule`, `Set-TransportRule`, `Enable-TransportRule`, `Disable-TransportRule` und `Remove-TransportRule` verwalten Mailflow-Regeln. Typische Aufgaben sind Disclaimer, Betreffpräfixe, Kennzeichnung externer messages und messagesrestriktionen. Eine Regel ohne Bedingungen kann unbeabsichtigt auf alle messages wirken.
Get-TransportRule | Format-Table Name,State,Priority
New-TransportRule -Name 'External Subject Tag' -FromScope NotInOrganization -SetHeaderName 'X-External-Mail' -SetHeaderValue 'true'
Disable-TransportRule -Identity 'External Subject Tag'
Transportregeln und Priorität
`Get-TransportRule | Format-Table Name,State,Priority` zeigt Regeln und Prioritäten. Änderungen zunächst mit engen Bedingungen testen.
Send und Receive Connectoren
`Get-SendConnector` und `Get-ReceiveConnector` sind zentrale Diagnosebefehle für SMTP. Mit `Get-SendConnector | Format-List Name,AddressSpaces,SmartHosts` und `Get-ReceiveConnector | Format-List Name,Bindings,RemoteIPRanges,PermissionGroups,AuthMechanism` lassen sich wichtige Einstellungen prüfen.
Get-SendConnector | Format-List Name,AddressSpaces,SmartHosts
Get-ReceiveConnector | Format-List Name,Bindings,RemoteIPRanges,PermissionGroups,AuthMechanism
SMTP Relay prüfen
Bei Relay-Problemen insbesondere `RemoteIPRanges`, `AuthMechanism`, `PermissionGroups` und `Bindings` kontrollieren. Receive Connectoren sollten nach dem Least-Privilege-Prinzip konfiguriert werden.
Mailbox-Berechtigungen
`Add-MailboxPermission` wird häufig für Full Access eingesetzt. Send As und Send on Behalf verwenden passende Exchange-/AD-Berechtigungen beziehungsweise `Set-Mailbox -GrantSendOnBehalfTo`. Vor Änderungen bestehende Rechte prüfen.
Get-MailboxPermission user
Set-Mailbox user -GrantSendOnBehalfTo delegate@example.org
Aliase und SMTP-Adressen
`Set-Mailbox -EmailAddresses` pflegt zusätzliche SMTP-Adressen. Die primäre Adresse wird mit `SMTP:` großgeschrieben, weitere Adressen typischerweise mit `smtp:`. Vorher `Get-Mailbox user | Select -ExpandProperty EmailAddresses` ausführen.
Get-Mailbox user | Select -ExpandProperty EmailAddresses
Set-Mailbox user -EmailAddresses @{add='smtp:alias@example.org'}
Mailbox-Datenbanken
`Get-MailboxDatabase`, `Get-MailboxDatabase | Get-MailboxStatistics` und `Get-MailboxDatabaseCopyStatus` gehören zum täglichen Werkzeugkasten. Mount-/Dismount-Vorgänge nur mit klarer Ursache durchführen.
Get-MailboxDatabase
Get-MailboxDatabase | Get-MailboxStatistics
Get-MailboxDatabaseCopyStatus
Health und Mailflow
`Test-ServiceHealth` prüft wichtige Exchange-Dienste, `Test-Mailflow` die messagesübermittlung. Für tiefergehende Diagnose queue, Message Tracking und Eventlogs kombinieren.
Test-ServiceHealth
Test-Mailflow
Exchange-Zertifikate
`Get-ExchangeCertificate | Format-List Thumbprint,Services,Subject,NotAfter` liefert eine schnelle Übersicht. `Enable-ExchangeCertificate` ordnet certificates Diensten wie IIS oder SMTP zu. Vor Austausch SANs, Ablaufdatum und Dienste prüfen.
Get-ExchangeCertificate | Format-List Thumbprint,Services,Subject,NotAfter
Nützliche Einzeiler
`Get-Mailbox -ResultSize Unlimited | Measure-Object` zählt mailboxes. `Get-MailboxDatabase | Select Name,Mounted` zeigt Datenbanken. `Get-queue | Sort MessageCount -Descending | Select -First 10` findet die größten queues. `Get-ExchangeServer | Select Name,AdminDisplayVersion` zeigt Versionen.
Get-Mailbox -ResultSize Unlimited | Measure-Object
Get-MailboxDatabase | Select Name,Mounted
Get-Queue | Sort MessageCount -Descending | Select -First 10
Get-ExchangeServer | Select Name,AdminDisplayVersion
Sicher arbeiten
Vor Änderungen an Regeln, Connectoren, Filtern oder Berechtigungen den Ist-Zustand dokumentieren und wo möglich `-WhatIf` verwenden. Ein guter Exchange-Admin kennt nicht nur den Änderungsbefehl, sondern auch den Rückweg.
Fazit
Die Exchange Management Shell ist für On-Premises-Administratoren ein mächtiges Werkzeug für Diagnose, Bulk-Operationen und präzise Konfiguration. Gerade bei queues, Message Tracking, PST-Exporten, forwardingen, address lists, transport rules und Connectoren spart sie im Alltag erheblich Zeit.
-WhatIf verwenden und anschließend gezielt verifizieren.