Wie können wir helfen?
Exchange Online PowerShell V2
Für Exchange Online entwickelt Microsoft eine neue PowerShell, die aber nicht mehr gegen einen lokalen Server genutzt wird. Erstmals orientiert sich Microsoft an den eigenen Vorgaben und addiert ein Prefix. Die bisherige Exchange PowerShell wird natürlich weiter wie seit Exchange 2007 gegen lokale Exchange Server genutzt.
Installation
Hinweis: Die neue Exchange PowerShell funktioniert noch nicht mit der PowerShell Core oder PowerShell 7
Schon die Installation unterscheidet sich von bisherigen PowerShell-Erweiterungen. Kein manueller Download von einer Microsoft Downloadseite, sondern sie müssen zuerst das Modul “PowerShellGet” installieren, wenn es nicht schon eh auf dem System installiert ist.
Install-Module PowershellGet
- PowerShellGet
https://docs.microsoft.com/de-de/powershell/module/powershellget/ - Installieren von PowerShellGet
https://docs.microsoft.com/de-de/powershell/scripting/gallery/installing-psget
Im zweiten Schritt installieren Sie dann das ExchangeOnlineManagement-Modul
Install-Module -Name ExchangeOnlineManagement
Danach habe ich mir angewöhnt die PowerShell zu schließen und neu zu öffnen, damit die neuen Module auch mit eingebunden werden.
Start und neue Befehle
Die starten dann einfach eine ganz normale PowerShell und geben ein:
Connect-ExchangeOnline
Automatisierte Nutzung
Interessant an der neuen PowerShell ist aber auch, dass eine Anmeldung nicht mehr nur mit Benutzername/Kennwort erfolgen kann. Dieser Zugang ist speziell für Automatisierungen nicht sicher. Schließlich müssten Sie die Zugangsdaten ja einem Skript überlassen. Weiterhin müssten Sie dann auch noch Ausnahmen bei MFA eintragen, damit eine Anmeldung per Benutzername/Kennwort möglich ist. Das ist gerade für sensible und privilegierte Konten unerwünscht.
Sie können aber ihrem Skript z.B. ein Zertifikat hinterlegen, mit dem es sich gegen Office 365 authentifizieren kann. Der Vorteil ist, dass Sie kein Kennwort benötigen und dieses damit nicht abgefischt werden kann und MFA quasi auch mit erledigt ist, denn wenn das Zertifikat “nicht exportierbar” auf dem Computer mit dem Skript verbunden ist.
- Nur-App-Authentifizierung für unbeaufsichtigte Skripts im Exo V2-Modu
https://docs.microsoft.com/de-de/powershell/exchange/app-only-auth-powershell-v2?view=exchange-ps - Modern Auth and Unattended Scripts in Exchange Online PowerShell V2
https://techcommunity.microsoft.com/t5/exchange-team-blog/modern-auth-and-unattended-scripts-in-exchange-online-powershell/ba-p/1497387
Throttling
Auch wenn Sie sich als Administrator mit ExchangeOnline verbunden haben, ist das noch kein Freibrief für “unlimited” PowerShell-Aktionen. Es gibt, wie auch für Anwender, ein Throttling und wenn Sie zu schnell und zu viele Commandlets absetzen, dann bekommen Sie folgende Fehlermeldung
„Your Request is too frequent…“
Vielleicht haben Sie einen Tenant mit 100.000 Postfächern und wollen bei allen einen Eintrag ändern. Aber meist liegt an einer schlechten Programmierung, warum Exchange Online die Anzahl der Anfragen von ihrem Client drosselt. Es gibt einig Limit, die Sie mit passender Programmierung umgehen können. Eine Anhebung der Limit soll nicht möglich sein.
Throttling Wert | Einstellung | Description |
---|---|---|
PowerShellMaxConcurrency | 3 | Ein Anwender kann nicht mehr als 3 Sessions parallel offen haben. Das bedeutet, dass Sie eine Session am Ende auch sauber abbauen sollten . |
PowerShellMaxTenantConcurrency | 9 | Für den Tenant gibt es eine globale Einstellung. |
PowerShellMaxCmdletsTimePeriod | 5 Sek | The time period, in seconds, that a user can run the number of cmdlets defined by the PowerShellMaxCmdlets or ExchangeMaxCmdlets parameter |
PowerShellMaxCmdlets | 200 | The number of cmdlets that can be run per PowerShellMaxCmdletsTimePeriod without being throttled |
ExchangeMaxCmdlets | 25 | This parameter is similar to PowerShellMaxCmdlets but only for Exchange Online cmdlets |
PowerShellMaxDestructiveCmdletsTimePeriod | 60 Sek | The time period, in seconds, that a user can run the number of cmdlets defined by the PowerShellMaxDestructiveCmdlets parameter |
PowerShellMaxCmdletQueueDepth | 50 | Defines the number of operations that a user can run simultaneously |
PowerShellMaxDestructiveCmdlets | 120 | The number of cmdlets that can be run per PowerShellMaxDestructiveCmdletsTimePeriod without being throttled. A desuctive cmdlet is one that makes changes to the Office 365 environment (Such as Set or New cmdlets) |
Funktioniert perfekt, danke!