Admins konfigurieren Exchange über das Exchange Admin Center und die Exchange-Management-Shell. Letztere ist dabei ein Werkzeug der PowerShell und dieser Vorabartikel aus dem neuen IT-Administrator Sonderheft "PowerShell" stellt im Detail vor, wie sich damit Postfächer verwalten lassen und Admins die Performance im Blick haben.
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-Befehle 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 das mächtigere Werkzeug. Die PowerShell ist oft der flexiblere und effizientere Weg, mit dem Sie sich wesentlich mehr Eigenschaften anzeigen als über die EAC. Darüber hinaus filtern und sortieren Sie die Daten schneller.
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:
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-Befehle 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 das mächtigere Werkzeug. Die PowerShell ist oft der flexiblere und effizientere Weg, mit dem Sie sich wesentlich mehr Eigenschaften anzeigen als über die EAC. Darüber hinaus filtern und sortieren Sie die Daten schneller.
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:
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).
Bild 1: Das Get-Mailbox-Cmdlet zeigt die vorhandenen Postfächer an. Die erweiterten Parameter des Befehls bringt Strg+Leertaste zur Ansicht.
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.
Das Get-Command-Cmdlet listet Ihnen alle Befehle auf, die Ihnen zur Verfügung stehen. Über Platzhalter fragen Sie Cmdlets einer Befehlsgruppe ab:
Get-Command *MailboxDatabase*
Die genaue Beschreibung eines Befehls erhalten Sie über Get-Help. Mit der Erweiterung "Detailed" zeigen Sie sich noch die Parameter und Beispiele zu einem Befehl an:
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" unter [1]. 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 *<CBenutzer>*
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:
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.
IT-Administrator Sonderheft PowerShell
Das erste IT-Administrator Sonderheft 2024 zum Thema "PowerShell – Infrastrukturen automatisiert verwalten" liefert 180 Seiten praktisches Know-how zum Umgang mit der Microsoft-Skriptumgebung und deren Einsatz zur Automatisierung wichtiger Serversysteme.
Das Autorenteam wirft zunächst einen Blick auf die Methoden und Techniken, die die PowerShell für die Administration bereitstellt. So kommen wichtige Sicherheitsmechanismen, der Remote-Zugriff und der Einsatz von Klassen zur Sprache. Sehr wichtig ist für Admins in diesem Zusammenhang, die Unterschiede zwischen den Versionen 5 und 7 der PowerShell zu verstehen, weshalb das Sonderheft darauf im Detail eingeht. Und neben fortgeschrittenen Techniken wie dem Erstellen eigener Cmdlets oder der Zusammenarbeit von PowerShell und Python, finden Einsteiger einen umfangreichen Grundlagenartikel als ergänzenden Download.Den praktischen Einsatz von PowerShell-Skripten demonstrieren wir dann unter anderem für Exchange, Active Directory, Storage und im Netzwerk. Natürlich kommt auch das Management von Windows-Servern nicht zu kurz und wir zeigen darüber hinaus, wie die Desired State Configuration für Sicherheit sorgt. Das Sonderheft schließt mit einer Rubrik rund um Tools ab, die Zusatzfunktionen für die PowerShell liefern oder die Arbeit damit deutlich vereinfachen.Das Sonderheft ist ab Ende April 2024 verfügbar und kostet für Abonnenten des IT-Administrator 24,90 Euro, für Nicht-Abonnenten werden 29,90 Euro fällig.
Unter Exchange kann standardmäßig jeder Benutzer 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:
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) ermöglicht 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 stellt die neuen und die alten Befehle gegenüber, wobei die alten Cmdlets weiterhin verfügbar sind:
Neue Cmdlets in Exo V3
Altes Cmdlet
Neues 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
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:
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).
Bild 2: Die Befehlsprotokollierung in der EAC zeigt die PowerShell-Befehle zu den gerade ausgeführten Aktionen.
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 überwacht werden. 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 Protokoll 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/2020 | ft RunDate, Caller, CmdletName, CmdletParameters, ObjectModified
Fazit
Die PowerShell ist ein mächtiges Werkzeug für die Exchange-Administration, wie wir in Teil 2 des Workshops anhand der Postfach- und Dankenbankverwaltung sehen werden.