Wie Microsoft die Exchange Online PowerShell verbessert

Microsoft unterstützt Exchange-Online-Administratoren, welche die PowerShell verwenden, mit verbesserten Funktionen und höherer Zuverlässigkeit und Geschwindigkeit.

Mit PowerShell können Administratoren Verwaltungsaktivitäten in Exchange Online flexibel und leistungsstark ausführen. Und manchmal ist PowerShell sogar die einzige Möglichkeit, bestimmte Managementaufgaben auszuführen.

In der Vergangenheit gab es jedoch bei vielen Exchange-Administratoren Bedenken. Sie waren von den Fähigkeiten von Exchange Online PowerShell nicht überzeugt – und teilweise ist das noch immer so.

Besondere Vorbehalte haben viele gegen die PowerShell, wenn sie Tausende von Postfächern und komplizierten Aktionen managen müssen. Um potenzielle Managementprobleme zu reduzieren, hat Microsoft das Exchange Online PowerShell V2-Modul veröffentlicht – auch bekannt als ExchangeOnlineManagement-Modul.

Neue Cmdlets dämmen PowerShell-Probleme ein

Das Verlegen der Messaging-Plattform in die Cloud kann Administratoren frustrieren. Besonders hoch ist die Frustration, wenn sie versuchen, remote mit der PowerShell zu arbeiten, ohne eine zuverlässige Verbindung zum Microsoft E-Mail-System herstellen zu können.

Laut Microsoft bringen die jüngsten PowerShell-Versionen Verbesserungen und neue Cmdlets mit. Die Leistungs- und Zuverlässigkeitsprobleme wie Session Timeouts oder schlechte Fehlerbehandlung sollen damit bei komplexen Vorgängen verringert werden.

In den Fällen, in denen eine fehlerhafte Verbindung zu Fehlern oder abbrechenden Skripts mit dem vorherigen Modul führten, hat Microsoft dem Exchange Online PowerShell V2-Modul neue Cmdlets hinzugefügt. Damit kann man nun neu starten und versuchen, ein Skript dort auszuführen, wo es vor Beginn der Probleme abgebrochen wurde.

Microsoft hat dem neuen Exchange Online PowerShell-Modul zehn neue Cmdlets hinzugefügt. Ein neues Cmdlet, Connect-ExchangeOnline, ersetzt zwei ältere Cmdlets: Connect-EXOPSSession und New-PSSession.

Microsoft hat neun zusätzliche Cmdlets in das ältere Modul aufgenommen, sie zur Verwendung mit REST APIs aktualisiert und ihnen neue Namen mit dem EXO-Präfix gegeben:

  • Get-EXOMailbox
  • Get-EXORecipient
  • Get-EXOCASMailbox
  • Get-EXOMailboxPermission
  • Get-EXORecipientPermission
  • Get-EXOMailboxStatistics
  • Get-EXOMailboxFolderStatistics
  • Get-EXOMailboxFolderPermission
  • Get-EXOMobileDeviceStatistics

Laut Microsoft sind die neuen REST-basierten Cmdlets deutlich schneller und leistungsfähiger als das vorherige PowerShell-Modul. Die REST APIs bieten eine stabilere Verbindung zum Exchange-Online-Backend, so dass die meisten Funktionen schneller reagieren und in einer zustandslosen Sitzung ausgeführt werden können.

Angesichts der Tatsache, dass Administratoren komplexe PowerShell-Skripte für ihre Managementanforderungen entwickeln, benötigten sie von Microsoft mehr Stabilität. Nur so lässt sich sicherstellen, dass diese Aufgaben ordnungsgemäß ausgeführt werden.

Microsoft unterstützte diese Entwicklungsbemühungen durch die Einführung einer besseren Skriptfehlerbehandlung mit Funktionen, die einen erneuten Versuch und die Wiederaufnahme an der Fehlerstelle ermöglichen. Bisher bestand die einzige Option für Administratoren darin, ihre Skripte erneut auszuführen und zu hoffen, dass es beim nächsten Mal funktioniert.

Es gibt Fälle, in denen während der Skriptausführung einige Eigenschaften abgefragt werden, die sich infolge der Größe der Objekte und anderer Eigenschaften auf die Gesamtreaktion und die Leistung des Skripts auswirken können.

Um diese Szenarien zu optimieren, hat Microsoft eine neue Möglichkeit eingeführt. Dabei wird ein PowerShell-Prozess für Exchange Online ausgeführt, der nur die während des Ausführungsprozesses relevanten Objekteigenschaften abruft. Ein Beispiel wäre das Abrufen von Postfacheigenschaften, die am wahrscheinlichsten verwendet werden – zum Beispiel Postfachstatistiken, Identitäten und Kontingente.

Microsoft hat die Notwendigkeit beseitigt, den Select-Parameter verwenden müssen. Dieser Parameter wird normalerweise eingesetzt, um zu bestimmen, welche Eigenschaften als Teil der Ergebnismenge benötigt werden. Dadurch werden Skripte aufgeräumt und unnötige Syntax eliminiert, wie im folgenden Beispiel gezeigt wird.

Vorher:

Get-ExoMailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox | Select WhenCreated, WhenChanged | Export-CSV c:\temp\ExportedMailbox.csv

Nachher:

Get-ExoMailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox  -PropertySets Quota -Properties WhenCreated, WhenChanged | Export-CSV c:\temp\ExportedMailbox.csv

So erhalten Sie neue Exchange Online PowerShell-Module

Um die neuesten Exchange Online PowerShell-Funktionen nutzen zu können, muss das ExchangeOnlineManagement-Modul installiert oder aktualisiert werden. Dies kann über eine PowerShell-Eingabeaufforderung erfolgen, die unter den Administratoreinstellungen ausgeführt wird und einen der beiden folgenden Befehle ausführt:

Install-Module -Name ExchangeOnlineManagement

Import-Module ExchangeOnlineManagement; Get-Module ExchangeOnlineManagement

Oder:

Update-Module -Name ExchangeOnlineManagement

Benutzer des neuen Exchange Online-PowerShell-Moduls können den Befehl Install-Module verwenden, um mit den neuen Cmdlets arbeiten zu können.
Abbildung 1: Benutzer des neuen Exchange Online-PowerShell-Moduls können den Befehl Install-Module verwenden, um mit den neuen Cmdlets arbeiten zu können.

PowerShell-V2-Modulbefehle bieten Geschwindigkeitsschub

IT-Professionals, die das neue PowerShell-Modul verwenden, sollten eine verbesserte Leistung und eine schnellere Reaktionszeit feststellen.

Wir können einen kurzen Test durchführen, um zu vergleichen, wie sich die aktuelle Version im Vergleich zur vorherigen Version verhält. Dazu führen wir einfach Befehle aus, die dieselbe Art von Informationen liefern.

Führen Sie zunächst den folgenden Legacy-Befehl aus, um Mailbox-Informationen von einer Organisation abzurufen:

Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox | Select DisplayName, ProhibitSendReceiveQuota, WhenCreated, WhenChanged

Der Befehl wird in 2,3890 Sekunden ausgeführt.

Eine typische Verwendung von PowerShell in Exchange Online besteht darin, mit dem Cmdlet Get-Mailbox Informationen zu Postfächern abzurufen, die von Mitgliedern der Organisation verwendet werden.
Abbildung 2: Eine typische Verwendung von PowerShell in Exchange Online besteht darin, mit dem Cmdlet Get-Mailbox Informationen zu Postfächern abzurufen, die von Mitgliedern der Organisation verwendet werden.

Dies ist die neue Version des Befehls, die dieselben Informationen enthält, jedoch in einem etwas anderen Format:

$RESTResult = Measure-Command { $Mbx = Get-ExoMailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox -PropertySets Quota -Properties WhenCreated, WhenChanged

Der Befehl wird in 1,29832 Sekunden ausgeführt – also fast der Hälfte der Zeit. Wenn Sie diese Ergebnisse auf eine Organisation mit vielen tausend Benutzern und Postfächern in Exchange Online hochrechnen, können Sie den Nutzen erkennen: Schließlich dauert die Ausführung eines Skripts nur halb so lange.

Verwenden Sie folgenden Befehl, um Postfachdetails für Benutzer in der Organisation abzurufen:

Get-ExoMailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox -PropertySets Quota -Properties WhenCreated, WhenChanged

Mit dem aktualisierten Cmdlet Get-ExoMailbox werden detaillierte Informationen für ein in Exchange Online gehostetes Postfach abgerufen.
Abbildung 3: Mit dem aktualisierten Cmdlet Get-ExoMailbox werden detaillierte Informationen für ein in Exchange Online gehostetes Postfach abgerufen.

Der folgende Befehl exportiert eine CSV-Datei mit detaillierten Angaben zu Postfächern, in denen zusätzliche Eigenschaften aufgelistet sind:

Get-ExoMailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox -PropertySets Quota -Properties WhenCreated, WhenChanged | Export-CSV c:\temp\ExportedMailbox.csv

Voraussetzungen für Exchange-Online-PowerShell-Module beachten

Es gibt einige Einschränkungen, die Exchange-Administratoren kennen sollten, bevor sie das neueste ExchangeOnlineManagement-Modul verwenden:

  • Das neue Exchange-PowerShell-Online-Modul funktioniert nur ab Windows PowerShell 5.1, wobei die neue plattformübergreifende Version von PowerShell unterstützt wird.
  • Die von den neuesten Cmdlets zurückgegebenen Datenergebnisse sind alphabetisch sortiert, nicht chronologisch.
  • Das neue Modul unterstützt nur die OAuth-2.0-Authentifizierung, aber der Clientcomputer muss über eine grundlegende Berechtigung verfügen, um die älteren Remote-PowerShell-Cmdlets verwenden zu können.
  • Einige Ergebnisse erfordern möglicherweise eine zusätzliche Formatierung oder Anpassung, da die neuen Cmdlets eine alphabetisch sortierte Ausgabe liefern.
  • Administratoren sollten die Azure AD GUID für die Kontoidentität verwenden.

Microsoft Feedback für weitere Entwicklungen geben

Im Zuge der weiteren Verbesserung des Moduls durch Microsoft werden Administratoren auch weiterhin mehr Funktionen sehen, die es ihnen ermöglichen, ihre Exchange-Online-Umgebung mit PowerShell besser zu verwalten.

Für Benutzer, die Microsoft Feedback zu den neuen PowerShell-Befehlen geben möchten, gibt es drei Möglichkeiten. Die erste besteht darin, Fehler oder andere Probleme während der Verarbeitung der verschiedenen Skripte aus PowerShell heraus zu melden. Führen Sie dazu folgenden Befehl aus:

Connect-ExchangeOnline -EnableErrorReporting -LogDirectoryPath <Path to store log file> -LogLevel All

Die zweite Möglichkeit besteht darin, eine Nachricht im UserVoice-Forum zu posten.

Schließlich können Benutzer mit den Exchange Online PowerShell-Befehlen auf der Microsoft Docs Github-Website unter diesem Link ein Problem einreichen oder den Status eines Problems überprüfen.

Erfahren Sie mehr über Softwareentwicklung