Exchange-Administration mit PowerShell - Mail-Manipulation
Admins konfigurieren Exchange über das Exchange Admin Center und die Exchange-Management-Shell. Letztere ist dabei ein Werkzeug der PowerShell und dieser Workshop stellt im Detail vor, wie sich damit Postfächer verwalten lassen und Admins die Performance im Blick haben.
In Kürze
- Die Exchange Management Shell (EMS) erweitert das Exchange Admin Center um leistungsfähige PowerShell-Cmdlets für die Administration und Automatisierung.
- Mit Cmdlets wie
Get-Mailbox,Set-MailboxoderNew-Mailboxverwalten Administratoren Postfächer effizient per Skript. - PowerShell vereinfacht die Überwachung von Exchange-Servern, Datenbanken, Mailfluss und Performance durch umfangreiche Diagnose- und Monitoringbefehle.
- Auch Exchange Online lässt sich über das moderne ExchangeOnlineManagement-Modul sicher per PowerShell administrieren.
- Durch Automatisierung und Massenbearbeitung reduziert die Exchange Management Shell den Verwaltungsaufwand in lokalen und hybriden Exchange-Umgebungen erheblich.
Das Exchange Admin Center (EAC) hat über die Jahre viele Verbesserungen erfahren, sodass es Admins heute als ausgereifte Administrationsoberfläche dient. Die EAC-Befehle werden dabei im Hintergrund über PowerShell-Cmdlets ausgeführt. Diese Kommandos können Sie auch direkt zur Administration über die Exchange-Management-Shell (EMS) nutzen. Die EMS ist auch in Exchange 2019 ein wichtiger Bestandteil der Administration und ergänzt nicht nur die grafische Oberfläche, sondern ist insgesamt ein mächtigeres Werkzeug. Die PowerShell eröffnet oft flexiblere und effizientere Wege, über die sich wesentlich mehr Eigenschaften anzeigen lassen als über die EAC. Darüber hinaus filtern und sortieren Sie so die Daten schneller.
Dieser Artikel erschien im IT-Administrator Sonderheft I/2024
"PowerShell – Infrastrukturen automatisiert verwalten"
Das Sonderheft I/2024 liefert auf 205 Seiten praktisches Know-how zum Umgang mit der Microsoft-Skriptumgebung und deren Einsatz zur Automatisierung wichtiger Serversysteme. Das Autorenteam wirft unter anderem einen Blick auf die Methoden und Techniken, die die PowerShell für die Administration bereitstellt.
Bestellen Sie das Sonderheft hier als E-Paper
oder
hier als gedrucktes Heft.
Einstieg in die PowerShell für Exchange
Wie in der PowerShell üblich, verfügen fast alle Befehle über die vier Präfixe Get, Set, New und Remove, denen das erweiterte Kommando folgt. So erstellen Sie neue Mailboxen über das New-Mailbox-Cmdlet, zeigen sich über Get-Mailbox Postfächer mit den Eigenschaften an, bearbeiten diese mit Set-Mailbox und löschen sie mit Remove-Mailbox.
Bei einer Get-Abfrage erhalten Sie zunächst alle Eigenschaften eines Objektes zurück. Das Ergebnis lassen Sie sich über eine Format-Tabelle (Alias "ft") oder Format-Liste (Alias "fl") – getrennt mittels Pipe – als Tabelle oder Liste anzeigen. So erhalten Sie mit folgendem Befehl zum Beispiel alle Mailboxen samt deren Displaynamen, Datenbanken und der Organisationseinheiten:
Get-Mailbox |ft DisplayName, Database, OrganizationalUnit
Spezielle Eigenschaften fragen Sie über die Parameter direkt ab. Die Postfächer einer bestimmten Datenbank ermitteln Sie wie folgt:
Get-Mailbox -Database EXDB01
Welche Parameter eines Befehls zur Verfügung stehen, erfahren Sie mit "Strg+ Leertaste" nach dem Minuszeichen (Bild 1).
Sollte die Ausgabe einer Abfrage zu lang sein, hilft die Erweiterung "more" direkt hinter der Pipe bei der Ausgabe. Hierdurch erfolgt die Darstellung seitenweise und die Space-Taste dient dem Weiterblättern.
Die tabellarische Darstellung mittels "ft" optimieren Sie weiter mit den Parametern "Wrap" und "AutoSize". Wrap bricht die Ergebnisse einer Anzeigespalte bei großen Feldern um, sodass das Ergebnis mehrzeilig dargestellt wird. Der AutoSize-Parameter ermittelt die Spaltenbreiten anhand der tatsächlich angezeigten Daten, anstatt sie statisch vorzugegeben. Zur Weiterverarbeitung von Daten können Sie diese mittels Export-CSV auch sehr einfach exportieren. Als Letztes sei noch auf die Erweiterung "Out-GridView" hingewiesen. Dabei wird der Befehls-Output in tabellarischer Form auf einer grafischen Oberfläche dargestellt, wodurch Sie das Ergebnis in der Oberfläche weiter filtern können.
Das Get-Command-Cmdlet listet Ihnen alle Befehle auf, die Ihnen zur Verfügung stehen. Über Platzhalter fragen Sie Cmd-lets einer Befehlsgruppe ab:
Get-Command *MailboxDatabase*
Die genaue Beschreibung eines Befehls erhalten Sie über Get-Help. Mit der Erweiterung "-Detailed" erhalten Sie zudem noch die Parameter und Beispiele für die Nutzung des Cmdlets:
Get-Help Get-MailboxDatabase -Detailed
Sollte es bei der Anzeige der Befehle über "Get-Help" Probleme geben, finden Sie eine ausführliche Beschreibung der PowerShell-Befehle links im Bereich "Reference". Beachten Sie, dass nicht alle davon mit allen Eigenschaften in Exchange Online beziehungsweise lokal verfügbar sind. So suchen Sie zum Beispiel Cmdlets zu Exchange-Servern oder Datenbanken in Exchange Online vergebens.
Sofern eine Abfrage nicht alle Elemente zeigen soll, lässt sich die Ausgabe über eine Wildcard direkt beschränken. Nur Postfächer mit einem bestimmten Namen erhalten Sie also beispielweise wie folgt:
Get-Mailbox *<Benutzer>*
Das gleiche Ergebnis erzielen Sie auch über einen Where-Filter:
Get-Mailbox | where DisplayName -match "<Benutzer>"
Eine andere Schreibweise mit geschweifter Klammer lässt auch die Verwendung verschiedener Bedingungen zu:
Get-Mailbox | where {$_.DisplayName -match "Chris" -and $_.Server-Name -eq "LABEX19"}
Eine Besonderheit stellt der Parameter "ANR" da. Er gibt eine Zeichenfolge an, für die eine Suche zur Auflösung eines nicht eindeutigen Namens (Ambiguous Name Resolution, ANR) erfolgen soll. Alle Personen mit dem Syntax "Chris", egal, ob im Namen, im Alias oder im DisplayName zu finden, fragen Sie wie folgt ab:
Get-Mailbox -Anr Chris
Fernzugriff einrichten
Die Exchange-Management-Shell steht Ihnen auf einem Exchange-Server direkt zur Verfügung. Um von Ihrem Arbeitsplatz auf einen Exchange-2019-Server über die Remote PowerShell zuzugreifen, sind nur wenige Schritte nötig. Um den Zugriff zu ermöglichen, starten Sie die Windows PowerShell zunächst als Administrator. Weiter müssen Sie die Skriptausführungsrichtlinie auf "RemoteSigned" setzen:
Set-ExecutionPolicy RemoteSigned
Sind die Voraussetzungen gegeben, fragen Sie zunächst die Zugangsdaten ab:
$UserCredential = Get-Credential
Als Nächstes bereiten Sie die Session vor und geben das Ziel der Sitzung an:
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<ServerFQDN>/PowerShell/ -Credential $UserCredential
Der Syntax "ServerFQDN" entspricht dem Fully-Qualified Domain Name des Exchange-Servers, in unserem Beispiel "labex19.schulenburg.lab". Zum Schluss bauen Sie die Verbindung über
Import-PSSession $Session -DisableNameChecking
auf. Es stehen Ihnen nun sämtliche Exchange-Befehle in der PowerShell-Sitzung zur Verfügung. Nach dem Ende der Arbeiten trennen Sie die Verbindung über Remove-PSSession $Session.
Unter Exchange kann standardmäßig jeder User auf die Remote-Shell zugreifen. Die Benutzer können sich aber nur in dem Rahmen bewegen, der ihnen über die rollenbasierte Zugriffssteuerung (Role Based Access Control, RBAC) zugewiesen ist. Den Zugriff deaktivieren Sie über das Attribut "RemotePowerShellEnabled" beim Set-User-Cmdlet:
Set-User <Benutzer> -RemotePower-ShellEnabled $false
War in den Anfängen von Exchange Online der Zugriff ebenfalls einfach über die Remote-PowerShell möglich, hat sich dies mit der Zeit geändert. Das "Exchange Online PowerShell V3"-Modul (abgekürzt als "Exo V3"-Modul) erlaubt einen wesentlich einfacheren und auch sichereren Zugriff über die Verwendung moderner Authentifizierung. Dieser Weg ist, nach dem Ende von "Exchange Online PowerShell V1" im Januar 2023 und von v2 im Juli 2023, die einzige Möglichkeit, um sich mit Exchange Online zu verbinden. Exo V3 bringt dabei noch einige neue Cmdlets für die Massenbearbeitung mit. Die Tabelle auf Seite 112 stellt die neuen und alten Befehle gegenüber, wobei die alten Cmdlets weiterhin verfügbar sind.
Um sich mit Exchange Online zu verbinden, starten Sie die PowerShell im privilegierten Modus und installieren zunächst das Management-Modul:
Install-Module -Name ExchangeOnlineManagement
Im Anschluss ist die Anmeldung unter Angabe eines Benutzers direkt möglich:
Connect-ExchangeOnline -UserPrincipalName <Benutzer>
Protokollierung der Befehle
Wie bereits angesprochen, werden die Befehle der EAC über PowerShell-Aufrufe umgesetzt. Dabei lässt sich über die Befehlszeilenprotokollierung nachvollziehen, welches PowerShell-Kommando zur aktuellen Aktion ausgeführt wurde. Aufrufen lässt sich die Befehlszeilenprotokollierung über die Hilfe. Die Anzeige erfolgt dabei in einem eigenen Fenster und Sie müssen dies beim Start der EAC aktivieren, damit Sie die PowerShell-Befehle nachvollziehen können. Das Protokoll speichert maximal 500 Zeilen und beginnt im Anschluss, die ältesten Einträge zu überschreiben. Leider referenziert das Protokoll auf die GUIDs der Exchange-Objekte, weshalb es schwierig sein kann, den richtigen Eintrag zu finden (Bild 2).
Eine richtige Überwachung ist hierdurch aber nicht gegeben. Exchange Online wie auch Exchange 2019 monitoren mit dem Administrator-Überwachungsprotokoll die Aktionen von Admins, die sowohl über das Exchange Administrator Center als auch über die Exchange-Management-Shell erfolgen. Dies bietet Organisationen die Möglichkeit, Änderungen an der Exchange-Umgebung nachzuvollziehen, sodass sie wissen, durch wen, was, wann geändert wurde. Es werden dabei nur Befehle protokolliert, die Objekte verändern, sodass Get- oder Search-Befehle nicht dabei sind. Ebenfalls gelangen keine fehlerhaft ausgeführten Befehle ins Protokoll. Die Protokollierung passen Sie bei Bedarf individuell an, dass sie nur bestimmte Befehle berücksichtigt. Exchange prüft beim Ausführen eines Kommandos, ob dieses oder speziell genutzte Parameter zu protokollieren sind und mit einem zu überwachenden Befehl übereinstimmt. Sofern dies der Fall ist, erfolgt eine Protokollierung in einen Systempostfach.
Verantwortlich für die Überwachung ist der Cmdlet-Extension-Agent "Admin Audit Log Agent". Konfigurationsanpassungen zur Überwachung werden grundsätzlich protokolliert, unabhängig davon, ob das Monitoring für den Befehl aktiv ist oder nicht. Die Konfiguration rufen Sie sich ausschließlich über die EMS und Get-AdminAuditLogConfig auf. Welche Cmdlets mit welchen Parametern genau geloggt werden, ist in den Parametern "AdminAuditLogCmdlets" und "AdminAuditLogParameters" zu finden. Standardmäßig ist hier ein Asterisk (*) eingetragen, was sämtliche Befehle ins Proto- koll integriert.
Die Einträge im Log werden standardmäßig 90 Tage aufbewahrt und im Anschluss gelöscht. Sie verlängern den Zeitraum über den Parameter "AdminAudit- LogAgeLimit". Setzen Sie diesen auf "0", löschen Sie alle Einträge im Protokoll.
Die Protokollierung erfasst im Auslieferungszustand den Namen und die Parameter des Befehls, das veränderte Objekt, wer den Befehl auf welchem Server ausgeführt hat sowie den Ausführungszeitpunkt. Es wird aber nicht mitgeschrieben, was genau geändert wurde. Um dies ebenfalls zu überwachen, aktivieren Sie das erweiterte Logging über "Verbose" und dem Parameter" LogLevel":
Set-AdminAuditLogConfig -LogLevel verbose
Das Protokoll über die Befehle zeigen Sie sich in der EAC unter dem Punkt "Verwaltung der Compliance / Überwachung" an. Hier rufen Sie den Punkt "Administratorenüberwachungsprotokoll-Bericht ausführen" auf. Es öffnet sich ein Popup-Fenster, in dem Sie über einen Zeitraum nach ausgeführten Cmdlets suchen. Die EAC bietet Ihnen weiterhin über den Punkt "Administratorenüberwachungsprotokoll exportieren" an, sich eine Übersicht der Befehle als E-Mail mit XML-Anlage zuzusenden.
Als Alternative zur EAC kommt die EMS mit den New-AdminAuditLogSearch- oder Search-AdminAuditLog-Cmdlets zum Einsatz. Hier filtern Sie direkt nach Benutzern oder Befehlen, um eine schnelle Übersicht zu erhalten. Folgendes Beispiel liefert alle ausgeführten Befehle nach dem 1. November 2023 tabellarisch:
Search-AdminAuditLog -StartDate 11/01/2023 | ft RunDate, Caller, CmdletName, CmdletParameters, ObjectModified
Verwaltung von Postfächern
Die Exchange-Postfächer sind meist Benutzerpostfächer, die Personen zugeordnet sind. Daneben kann diese Ressource aber auch beispielsweise für Besprechungsräume angelegt werden. Jedem Benutzerpostfach ist ein Active-Directory-Konto zugeordnet, das dem Anwender Zugriff auf das Postfach gibt, um E-Mail-Nachrichten senden und empfangen sowie Besprechungen und Termine erstellen zu können. Sprich, ein Postfach ist ein unverzichtbarer Bestandteil der Zusammenarbeit, der reibungslos funktionieren sollte.
Die Exchange-PowerShell bietet weit mehr Möglichkeiten zur Verwaltung von Postfächern als nur das Abrufen oder Setzen einfacher Eigenschaften. In diesem Abschnitt gehen wir tiefer auf diese Funktionen ein. Mit dem folgenden Code richten Sie zum Beispiel ein neues Postfach sehr schnell mit dem New-Mailbox-Cmdlet ein:
New-Mailbox -Name "Max Mustermann" -Alias "mmustermann" -Database "LABDB01" -OrganizationalUnit "CN=Users,DC=Schulenburg,DC=lab" -UserPrincipalName "mmustermann@schulenburg.lab" -FirstName "Max" -LastName "Mustermann" -Password (ConvertTo-SecureString -String "Passwort123!" -AsPlainText -Force)
Im Beispiel wird der Benutzer ebenfalls im Active Directory angelegt. Ist bereits ein User vorhanden, kann dieser über das Enable-Mailbox-Cmdlet für E-Mail aktiviert werden.
Um das angelegte Postfach in eine andere Postfachdatenbank zu verschieben, ist der folgende Aufruf zu nutzen. Dabei müssen Sie lediglich einen User und die zugehörige Zieldatenbank erzeugen:
New-MoveRequest -Identity "mmustermann@schulenburg.lab" -TargetDatabase "LABDB02"
Den Status einer Verschiebeaktion fragen Sie mit Get-MoveRequest beziehungsweise Get-MoveRequestStatistics ab.
Auch das Einrichten von Berechtigungen lässt sich über die PowerShell schnell realisieren. Dieses Beispiel gewährt einem anderen Benutzer Vollzugriff:
Add-MailboxPermission -Identity "mmustermann@schulenburg.lab" -User "Max" -AccessRights FullAccess
Über das Add-MailboxFolderPermis sion-Cmdlet lassen sich Rechte auch auf Ordnerebene festlegen.
Als Nächstes gehen wir kurz auf die Archivpostfächer ein. Die Nutzung des Exchange-Archives aktivieren Sie mit dem Enable-Mailbox-Befehl (das Deaktivieren erfolgt über Disable-Mailbox). Hierfür muss nur der Parameter "Archive" zum Einsatz kommen:
Enable-Mailbox -Identity "mmustermann@domain.com" -Archive
Als Letztes sei auf das Exportieren von Postfächern in PST-Dateien verwiesen. Sofern Sie über die entsprechenden Rechte verfügen, ist dies schnell durchgeführt:
New-MailboxExportRequest -Mailbox mmustermann -FilePath "\\Server\Share\mmustermann.pst"
Haben Sie sich bereits mit Get-Mailbox einen Überblick über die Postfächer und deren Eigenschaften verschafft, fragen Sie die Details einer Mailbox mit Get-MailboxStatistics ab. Als Rückmeldung erhalten Sie unter anderem die Anzahl der Elemente in dem Postfach sowie dessen Größe:
Get-MailboxStatistics Christian | ft DisplayName, ItemCount, TotalItemSize
Die Exchange-Management-Shell bietet eine umfangreiche Sammlung von Cmd-lets zur Verwaltung von Postfächern. Mit diesen können Administratoren effizient Postfächer erstellen, konfigurieren, migrieren und exportieren. Dieser Abschnitt hat Ihnen einen Überblick über die verschiedenen Befehle gegeben. Es lohnt sich, sich mit diesen vertraut zu machen, um die volle Kontrolle über die Exchange-Umgebung zu erlangen.
Überwachung des Serverstatus
Die Exchange-Management-Shell bietet nicht nur Werkzeuge zur Verwaltung von Postfächern und Konfigurationseinstellungen, sondern auch zur Überwachung und Diagnose von Exchange selbst. Diese Überwachungsfunktionen sind für Administratoren unerlässlich, um die Gesundheit und Leistung ihrer Exchange-Umgebung sicherzustellen. Eine Übersicht der Server in einer Organisation erhalten Sie über Get-ExchangeServer. Um den Status von Exchange zu ermitteln, bietet sich zunächst die Überprüfung der Dienste mittels Test-ServiceHealth an. Dieses Cmdlet zeigt an, welche erforderlichen Dienste auf dem Server laufen und welche nicht. Dies gibt einen schnellen Überblick über potenzielle Probleme. Sofern ein benötigter Dienst nicht gestartet ist, wird "RequiredServicesRunning" als "false" angezeigt. Die Abfrage kann für den lokalen, aber auch für entfernte Server zum Einsatz kommen.
Nicht gestartete Dienste erwecken Sie mit Start-Service zum Leben, auf entfernten Exchange-Servern gelingt dies wie folgt:
Invoke-Command -ComputerName LAB-EX19 {Start-Service IISAdmin}
Informationen zum Status von Exchange selbst erhalten Sie über den Aufruf Get-HealthReport. Dies ist immer ein erster Ansatzpunkt bei der Fehlersuche und die Komponenten können die Status "Degraded", "Unhealthy", "Repairing", "Disabled", "Unavailable" und "UnInitialized" annehmen. Zum Anzeigen fehlerhafter Komponenten nutzen Sie:
Get-HealthReport LABEX19 | where {$_.alertvalue -ne "Healthy" -and $_.AlertValue -ne "Disabled"}
Etwas ausführlicher geht der Get-ServerHealth-Befehl auf die einzelnen Komponenten von Exchange ein. Da die Liste der Rückmeldungen sehr umfangreich ist, lohnt sich zunächst der Blick auf
Get-ServerHealth LABEX19 | where {$_.alertvalue -ne "Healthy" -and $_.AlertValue –ne "Disabled"}
Alternativ prüfen Sie direkt eine oder mehrere fehlerhafte Komponenten:
Get-ServerHealth LABEX19 -HealthSet Network | ft Name, HealthSetName, ServerComponentName, AlertValue -AutoSize
Ein weiterer wichtiger Aspekt ist die Überwachung des Status der Mailbox-Datenbanken in einer Database Availabilty Group (DAG), den Sie mittels Get-MailboxDatabaseCopyStatus prüfen. Dies gibt Auskunft darüber, ob Datenbankkopien gesund sind, synchronisiert werden und ob sie aktiv oder passiv sind.
Hat eine Datenbank den Status "Failed" oder "FailedAndSuspended", sollten Sie etwas genauer hinschauen. So ergänzt das Test-ReplicationHealth-Cmdlet die Prüfung der DAG. Verwenden Sie das Cmd-let, um alle Aspekte von Replikation und Wiedergabestatus zu überprüfen und sich so einen vollständigen Überblick über die DAG zu verschaffen.
E-Mail-Warteschlangen sind ein weiterer kritischer Bereich, den es im Blick zu haben gilt. Mit Get-Queue | ft prüfen Sie deren Status. Dies zeigt alle Warteschlangen auf dem Server und Informationen über den jeweiligen Status. Der Test-Mailflow-Befehl überprüft die Mailflow-Konnektivität und schaut, ob aus dem Systempostfach eine Nachricht an einen Postfachserver übermittelt wird. Diese gibt erste Hinweise, ob der E-Mail-Fluss intern gestört oder verzögert ist.
Ein weiterer Aspekt, den Sie bei der Überwachung ebenfalls beachten sollten, ist die Performance. Mit der PowerShell können Sie auch auf Windows Performance Counter zugreifen, um verschiedene Aspekte der Exchange-Performance zu überwachen:
Get-Counter -Counter "\MSExchange MapiHttp Emsmdb\User Count"
Dies bringt die aktuelle Anzahl der MAPI-Nutzer zur Anzeige. Die OWA-Nutzer erreichen Sie über den Counter "MSExchange OWA\Current Unique Users". Eine Liste sämtlicher Sets lassen Sie sich mit folgendem Befehl ausgeben:
Get-Counter -ListSet * | Select CounterSetName, Description | Out-GridView
Die einzelnen Counter aus einem Set lesen Sie wiederum mit (Get-Counter -ListSet "MSExchange OWA").Paths aus.
Die PowerShell bietet eine breite Palette von Überwachungs- und Diagnosewerkzeugen für Exchange-Administratoren. Durch regelmäßige Überwachung und schnelle Reaktion auf festgestellte Probleme stellen Sie sicher, dass Ihre Exchange-Umgebung reibungslos und effizient läuft. Es ist ratsam, regelmäßige Überwachungsskripte oder -aufgaben einzurichten, um proaktiv auf potenzielle Probleme zu reagieren.
Hier sei zum Abschluss noch auf das Skript "Exchange Server Health Checker" verwiesen, das bei der Erkennung von häufigen Konfigurationsproblemen, die zu Leistungsengpässen und anderen, langanhaltenden Unanehmlichkeiten führen, hilft. Es listet dabei nützliche Informationen über den Server auf, um den Prozess der Informationssammlung über den Exchange-Server zu beschleunigen.
Exchange-Datenbanken verwalten
Exchange-Datenbanken sind das Herzstück der Umgebung und ihre effiziente Verwaltung ist entscheidend für eine reibungslose Kommunikation. Die PowerShell bietet eine leistungsstarke Schnittstelle für die Verwaltung dieser Datenbanken. Im Folgenden stellen wir Ihnen wichtige Befehle für diese Aufgabe vor.
Mit Get-MailboxDatabase verschaffen Sie sich zunächst einen Überblick über alle vorhandenen Datenbanken und deren Status. Das Wichtigste dabei ist, ob eine Datenbank eingebunden ist oder nicht. Ist dies nicht der Fall, können Sie die Datenbank direkt in Exchange mounten:
Mount-Database -Identity "LABDB01"
Das Dismounten erfolgt entsprechend mit dem Dismount-Database-Cmdlet.
Wichtig sind dabei neben den Pfaden zu der Datenbank auch die Größe der DB, was sowohl die reine Dateigröße im Dateisystem als auch den freien Speicherplatz in der Datenbank umfasst. Diese Werte fragen Sie recht schnell mit folgendem Befehl ab:
Get-MailboxDatabase -Status| fl Name, DatabaseSize, AvailableNewMailboxSpace, *Path*
Wichtig ist dabei der Parameter "Status", damit die Größen auch angezeigt werden. Welche Postfächer sich in einer Datenbank befinden, listen Sie sich wie folgt auf:
Get-Mailbox -Database "LABDB01" | ft Name, WindowsEmailAddress
Größenbeschränkungen beim Transport im Blick
Exchange bietet verschiedene Optionen, mit denen Sie Größenbeschränkung für E-Mails konfigurieren. Die Limits lassen sich dabei sehr granular auf Postfach- oder Protokoll-Ebene einrichten. Um den Versand von und nach extern über die Connectoren zu regulieren, passen Sie deren Einstellungen an. Den aktuellen Status fragen Sie mit
Get-SendConnector | ft Name, MaxMessageSize und Get-ReceiveConnector | ft Name, MaxMessageSize
ab. Standardmäßig liegt die Größenbeschränkung bei 35 beziehungsweise 36 MByte. Sie ändern diese Werte ebenfalls recht schnell, hier als Beispiel mit einem Limit von 50 MByte:
Get-SendConnector | Set-SendConnector -MaxMessageSize 50MB
Get-ReceiveConnector | Set-ReceiveConnector -MaxMessageSize 50MB
Daneben lassen sich noch die Organisationsbeschränkungen anpassen, die bei 10 MByte im Auslieferungszustand liegen. Sie überprüfen den aktuelles Status mit diesem Einzeiler:
Get-TransportConfig | fl MaxReceiveSize, MaxSendSize
Und ändern ihn etwa beispielsweise 50 MByte via:
Set-TransportConfig -MaxReceiveSize 50MB -MaxSendSize 50MB
Zudem sollten Sie noch die Beschränkungen der Postfächer im Auge haben, damit es an dieser Stelle keine Probleme gibt:
Set-Mailbox Christian -MaxSendSize 50MB -MaxReceiveSize 50MB
Beachten Sie bei der Konfiguration, dass die maximalen Werte für die Nachrichtengröße durch die Base64-Codierung circa 33 Prozent höher sein müssen als die tatsächlich nutzbare maximale Nachrichtengröße. Mit den oberen Befehlen kann der User Christian also nur etwa 33 MByte große E-Mails senden und empfangen. Sollten Sie Exchange Web Service (EWS), Outlook Web Access (OWA) oder ActiveSync nutzen, sind zusätzlich Anpassungen in der Webkonfiguration durchzuführen.
Planen Sie die Nachrichtengrößenbeschränkungen so, dass E-Mails möglichst früh in der Transport-Pipeline zurückgewiesen werden. An den Stellen, an denen Nachrichten in die Organisation eintreten, sollten die Beschränkungen möglichst restriktiv sein, damit Sie E-Mails aus dem Internet nicht erst annehmen, um sie im weiteren Verlauf abzulehnen. Benutzerbeschränkungen setzen die Begrenzungen für die Organisation innerhalb der Organisation außer Kraft, sodass Sie Gruppen definieren können, die untereinander größere E-Mails senden.
| Früheres Cmdlet | Neues EXO-V3-Cmdlet |
|---|---|
Get-CASMailbox |
Get-EXOCASMailbox |
Get-Mailbox |
Get-EXOMailbox |
Get-MailboxFolderPermission |
Get-EXOMailboxFolderPermission |
Get-MailboxFolderStatistics |
Get-EXOMailboxFolderStatistics |
Get-MailboxPermission |
Get-EXOMailboxPermission |
Get-MailboxStatistics |
Get-EXOMailboxStatistics |
Get-MobileDeviceStatistics |
Get-EXOMobileDeviceStatistics |
Get-Recipient |
Get-EXORecipient |
Get-RecipientPermission |
Get-EXORecipientPermission |
Postfächer beschränken
Damit die Postfächer nicht unkontrolliert anwachsen, ist es wichtig, entsprechende Beschränkungen zu definieren. Auf diesem Weg planen Sie indirekt das Wachstum der Datenbanken und Sie können ein unkontrolliertes Ansteigen der Postfachgröße verhindern. Definieren Sie immer eine Maximalgrenze, damit das Datenbanklaufwerk nicht vollläuft, auch wenn es Ihnen utopisch vorkommt. Nichts ist schlimmer als ein volllaufendes Postfach durch eine Mailschleife, die Exchange gegebenenfalls nicht erkennt. Die Einstellungen fragen Sie zunächst an der Mailbox. Über das Attribut "UseDatabaseQuotaDefaults" definieren Sie dabei, ob der Datenbankstandard genutzt wird:
Get-Mailbox Christian |ft IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota, UseDatabaseQuotaDefaults -AutoSize
Um die Limits entsprechend anzupassen, gehen Sie so vor:
Set-Mailbox -Identity Christian -IssueWarningQuota 30GB -ProhibitSendQuota 40GB -ProhibitSendReceiveQuota 50GB -UseDatabaseQuotaDefaults $false
Standardmäßig werden die Einstellungen der Datenbank übernommen, die bei Auslieferung bei einer maximalen Postfachgröße von 2 GByte liegen. Die Konfiguration über die Datenbank ist die zweite Stelle, an der Sie Grenzwerte für die Postfachgrößen definieren. Sie fragen die Parameter über diesen Befehl ab:
Get-MailboxDatabase LABDB01|ft IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota -AutoSize
Das folgende Beispiel listet Ihnen die Einstellungen aller Mailboxen einer Exchange-Datenbank auf, die nicht die Standardvorgaben nutzen. Auf diesem Weg bekommen Sie schnell Klarheit, wer die Einstellungen der Datenbank nutzt und bei wem individuelle Grenzwerte definiert sind:
Get-Mailbox -Database LABDB01 |Where UseDatabaseQuotaDefaults -eq $false | ft Name, IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota
Sofern Sie unterschiedliche Limits benötigen, fassen Sie die Mailboxen in eigenen Datenbanken zusammen, damit Sie die Rechte nicht an jedem Postfach explizit setzen müssen.
Definieren Sie nicht nur die Grenzen, sondern beschreiben Sie auch, wie die Mitarbeiter beim Erreichen der Grenzen handeln sollen. Sie sollten unbedingt vermeiden, Mitarbeiter in eine Schatten-IT zu zwingen. Denn schneller als Sie denken, werden E-Mail-Ablagen in Netzlaufwerken geschaffen oder durch die Nutzung von PST-Files dem Echtsystem entrissen.
Fazit
Insgesamt bietet die Exchange-Management-Shell eine flexible und leistungsstarke Umgebung für Administratoren, um Exchange-Server effizient zu verwalten, zu automatisieren und zu überwachen. Die Exchange Management Shell ist für die Administration tägliche Anlaufstelle und wir haben Ihnen einige wichtige Aspekte nähergebracht, damit das Auslesen und Konfigurieren zukünftig etwas zügiger vonstattengehen.
Die Exchange Management Shell (EMS) ist die PowerShell-basierte Verwaltungsoberfläche von Microsoft Exchange. Sie ermöglicht Administratoren die Konfiguration von Postfächern, Datenbanken, Berechtigungen, Transportregeln und Servereinstellungen über leistungsfähige Cmdlets.
Das Exchange Admin Center eignet sich hervorragend für Standardaufgaben. Mit PowerShell lassen sich jedoch wesentlich umfangreichere Abfragen, Massenänderungen und Automatisierungen durchführen. Viele Verwaltungsaufgaben können dadurch deutlich schneller erledigt werden.
Zu den wichtigsten Cmdlets gehören Get-Mailbox, New-Mailbox, Set-Mailbox, Enable-Mailbox, Disable-Mailbox, Get-MailboxStatistics und New-MoveRequest. Damit lassen sich Postfächer erstellen, konfigurieren, verschieben und überwachen.
Ja. Exchange Server unterstützt den Remotezugriff über PowerShell-Sitzungen. Für Exchange Online wird das Modul ExchangeOnlineManagement verwendet, das eine sichere Anmeldung mit moderner Authentifizierung ermöglicht.
PowerShell eignet sich hervorragend für Massenänderungen. Über Filter, die Pipeline oder den Import von CSV-Dateien können Administratoren zahlreiche Postfächer gleichzeitig konfigurieren, verschieben oder Berechtigungen vergeben.
Cmdlets wie Get-HealthReport, Get-ServerHealth, Test-ServiceHealth, Get-Queue oder Test-Mailflow unterstützen Administratoren bei der Überwachung von Serverstatus, Mailfluss, Datenbankreplikation und der allgemeinen Systemgesundheit.
Ja. Exchange verfügt über ein Administrator-Überwachungsprotokoll (Admin Audit Log), das Änderungen dokumentiert, die über die Exchange Management Shell oder das Exchange Admin Center vorgenommen wurden. Dadurch lassen sich Konfigurationsänderungen nachvollziehen.
PowerShell ist auch in Exchange Online unverzichtbar. Viele erweiterte Verwaltungsaufgaben und Massenänderungen lassen sich ausschließlich oder deutlich effizienter über das ExchangeOnlineManagement-Modul durchführen.
Ja. Administratoren können Datenbanken mounten oder dismounten, deren Größe überwachen, Datenbankkopien kontrollieren sowie Verschiebevorgänge und Replikationen per PowerShell verwalten.
Die Exchange Management Shell richtet sich an Administratoren von Exchange Server und Exchange Online. Besonders in größeren oder hybriden Umgebungen erleichtert sie die Automatisierung, Standardisierung und Überwachung komplexer Verwaltungsaufgaben erheblich.
