In diesem Post erfahren Sie, wie Sie PowerShell mit Azure Active Directory (Azure AD) verbinden, über das Identitäten und Lizenzen von Microsoft-365-Mandanten verwaltet werden. Ebenso werde ich die Verbindung mit anderen Diensten und Produkten in Microsoft 365 besprechen, beispielsweise Exchange, SharePoint und Microsoft Teams.
Wenn Sie in den letzten zehn Jahren mit Microsoft-Technologien gearbeitet haben, wissen Sie, dass PowerShell die Hauptsprache für die Verwaltung und Konfiguration vieler Microsoft-Produkte ist. Es gibt zahlreiche Gründe PowerShell für die Verwaltung von Microsoft 365 zu verwenden:
Es müssen bestimmte Voraussetzungen erfüllt werden, bevor eine Verbindung zu Azure AD mit PowerShell hergestellt werden kann. Zunächst benötigen Sie ein Konto mit ausreichenden Berechtigungen, um eine Verbindung herzustellen. Der globale Administrator hat Zugriff auf die meisten Verwaltungsfunktionen und -daten und über die verschiedenen Dienste hinweg. Microsoft empfiehlt, dass Sie nur 2–4 globale Administratoren in Ihrem Mandanten haben. In diesem Fall sollten Sie den Administratoren jeweils die Rolle mit den geringsten Berechtigungen zuweisen, die diese für ihre Aufgaben benötigen. Weitere Rollen sind globaler Leser, Gruppenadministrator und Helpdeskadministrator.
Es gibt zwei verschiedene Module, die Azure AD für Microsoft 365 verwalten können:
Die 2. Version des Graph-Moduls ersetzt die Funktionen des Windows PowerShell-Moduls Version 1 nicht vollständig. Allgemein sollten Sie versuchen, das Graph-Modul zu verwenden; in manchen Fällen ist jedoch das ältere Windows PowerShell-Modul besser geeignet.
Beide Module haben die folgenden Anforderungen und können unabhängig voneinander auf demselben System installiert werden:
PowerShell Core und Version 7 und höher unterstützen das Microsoft Azure Active Directory-Modul für Windows PowerShell nicht. Wenn Sie PowerShell Version 7 und höher verwenden, müssen Sie das Azure Active Directory-Modul für PowerShell für Graph verwenden. Das Microsoft Azure Active Directory-Modul für Windows PowerShell erfordert außerdem die Installation des Microsoft Online Services-Anmeldeassistenten für IT-Fachkräfte RTW, wenn Sie nicht Windows 10 benutzen.
Als nächstes müssen wir jedes Modul aus dem PowerShell-Katalog installieren. Der PowerShell-Katalog ist ein Repository, in dem viele Microsoft PowerShell-Module gehostet werden. Mit dem PowerShell-Katalog können Benutzer Module schnell und einfach direkt von PowerShell aus installieren und aktualisieren. Module werden anhand ihres Modulnamens mit dem Cmdlet „Install-Module“ installiert.
Um das Azure Active Directory-Modul für Windows PowerShell zu installieren, führen Sie den folgenden PowerShell-Befehl aus:
Um das Azure Active Directory-Modul für PowerShell für Graph zu installieren, führen Sie den folgenden PowerShell-Befehl aus:
Wenn Sie eine Meldung über die Installation von einem nicht vertrauenswürdigen Repository erhalten, überprüfen Sie, ob diese sich auf das PSGallery-Repository bezieht, und geben Sie dann Y ein.
Wenn Sie diese Meldung in Zukunft unterdrücken möchten, können Sie den folgenden PowerShell-Befehl ausführen, um die PSGallery als vertrauenswürdigen Installationsort festzulegen:
Jedes Modul verfügt über verschiedene Befehle für die Verbindung zu Azure Active Directory. Sie können Ihre Kontoanmeldeinformationen speichern, um deutlich schneller eine PowerShell-Sitzung zu erstellen.
Ein PSCredential-Objekt speichert einen Benutzernamen und ein Passwort, die Sie zur Authentifizierung bei verschiedenen Diensten verwenden können. Um ein PSCredential-Objekt für eine Variable zu erstellen, verwenden Sie das Cmdlet „Get-Credential“, und Sie werden in einem Fenster zur Eingabe des Administratorbenutzernamens und des Kennworts aufgefordert. Das Speichern der Anmeldeinformationen in einer Variablen ermöglicht die einfache Wiederverwendung mit mehreren Verbindungs-Cmdlets.
Um eine Verbindung mit dem Azure Active Directory-Modul für Windows PowerShell oder dem MSOnline-Modul herzustellen, verwenden Sie das Cmdlet Connect-MsolService, und stellen Sie die Variable $M365credentials bereit.
Um eine Verbindung mit dem Azure Active Directory-Modul für PowerShell für Graph herzustellen, verwenden Sie das cmdlet Connect-AzureAD erneut und benutzen Sie erneut die Variable $M365credentials mit dem gespeicherten Benutzernamen und Kennwort.
Wenn PowerShell mithilfe des MSOnline-Moduls eine erfolgreiche Verbindung herstellt, wird im Fenster nichts angezeigt. Sie können jedoch das cmdlet Get-MsolCompanyInformation ausführen, um zu überprüfen, ob Sie mit dem richtigen Azure AD-Mandanten verbunden sind.
Wenn PowerShell mithilfe des AzureAD-Moduls eine Verbindung herstellen kann, zeigt das Fenster das Verbindungskonto, die Umgebung, die Mandanten-ID und die Mandanten-Domäne an.
Aber PowerShell mit Azure AD zu verbinden ist erst der Anfang. Darüber können Sie zwar die Mandanten- und Benutzereinstellungen verwalten, allerdings hat Azure AD keinen Zugriff auf andere Dienste, die in Microsoft 365 gehostet werden. Die anderen Cloud-Produkte lassen sich jeweils mit eigenen Modulen und Cmdlets mit PowerShell verbinden. Die folgenden Abschnitte erklären, wie Sie eine Verbindung zu den Primärdiensten in Microsoft 365 herstellen können.
Um eine Verbindung mit Exchange Online herzustellen, musste früher eine Remote-PowerShell-Sitzung erstellt und importiert werden. Microsoft hat diesen Prozess mittlerweile optimiert, indem es ein Modul mit eigenem „connect“-Cmdlet veröffentlicht hat. Das neue ExchangeOnlineManagement-Modul (hier im PowerShell-Katalog erhältlich) bietet dieselben Cmdlets wie Version 1 der Remote-PowerShell, umfasst jedoch auch neue Cmdlets, die die Leistung bei der Arbeit mit Postfächern und anderen Empfängerobjekten verbessern.
Um dieses neue Modul verwenden zu können, müssen Sie es mit dem Cmdlet Install-Module aus dem PowerShell-Katalog installieren, genau wie mit den Azure AD-Modulen. Anschließend können Sie das Cmdlet Connect-ExchangeOnline mit Ihrer Anmeldedatenvariable nutzen, um die Verbindung zu PowerShell herzustellen.
Sie können Compliance-Fälle erstellen, das Administratorüberwachungsprotokoll durchsuchen und Aufbewahrungsrichtlinien mit PowerShell mit dem Security and Compliance Center erstellen. Mit der Veröffentlichung des neuen Exchange OnlineManagement-Moduls, das im vorherigen Abschnitt erwähnt wurde, können Sie sich über Connect-IPPSSession und Ihr Anmeldedatenobjekt mit dem Security and Compliance Center verbinden. Anschließend können Sie einen Befehl wie Get-AdminAuditLogConfig ausführen, um die Verbindung zu überprüfen.
Wenn Sie eine Verbindung zu einem Mandanten von Office 365 Deutschland herstellen, müssen Sie den Parameter -ConnectionUri mit dem Wert „https://ps.compliance.protection.outlook.de/PowerShell-LiveID“ angeben. Weitere Informationen über besondere Umstände finden Sie im Dokument Connect-IPPSSession.
SharePoint Online verfügt auch über ein eigenes Modul zum Verbinden vom PowerShell-Sessions Sie können sich das SharePoint Online Management Shell-Modul holen, indem Sie die ausführbare Datei von der Microsoft-Website herunterladen und installieren. Sie können die SharePoint Online Management-Shell auch über den PowerShell-Katalog mit dem Befehl Install-Module installieren.
Zum Herstellen einer Verbindung zwischen PowerShell und SharePoint Online können Sie das Cmdlet Connect-SPOService benutzen und weiterhin das Anmeldedatenobjekt verwenden. Sie müssen auch die SharePoint-URL des Mandanten-Admins angeben. Die URL enthält Ihren Mandantennamen (derselbe Name wie in Ihrer .onmicrosoft.com-Domain), gefolgt von „-admin.sharepoint.com“. In diesem Beispiel ist mein Mandantenname „upstarttech“.
Wenn Sie eine Fehlermeldung erhalten haben, dass die Website keine SharePoint-Online-Anmeldedaten unterstützt, können Sie versuchen, sich erneut zu verbinden, ohne den Parameter „-Credential“ anzugeben. PowerShell fordert Sie auf, den Benutzernamen und das Passwort einzugeben.
Sobald die Verbindung hergestellt ist, überprüfen Sie mithilfe des folgenden Befehls bestimmte Einstellungen der Mandantenkonfiguration:
Um ein PSCredential-Objekt zu verwenden, sollte LegacyAuthProtocolsEnabled „true“ und RequireAcceptingAccountMatchInvitedAcount „false“ sein. Wenn Sie diese Werte ändern, überprüfen Sie alle Sicherheits- oder Drittanbieter-Integrationen, die ggf. davon betroffen sein könnten. Es kann auch einige Zeit dauern, bis die Änderung wirksam wird.
Microsoft Teams gewinnt schnell an Beliebtheit innerhalb des Microsoft 365-Dienstes. Wie auch die anderen Module wird das Modul für Teams im PowerShell-Katalog gehostet.
Um dieses Modul zu installieren, können Sie wieder das Cmdlet Install-Module verwenden und das MicrosoftTeams-Modul angeben. Benutzen Sie anschließend das Cmdlet Connect-MicrosoftTeams, um mit unserer gespeicherten PSCredential-Variable eine Verbindung mit dem Online-Dienst herzustellen. Bei einer erfolgreichen Verbindung werden Informationen über den Microsoft-Teams-Mandanten ausgegeben.
Für Skype for Business Online musste bislang das Modul manuell aus dem Download Center von Microsoft heruntergeladen und installiert werden. Vor kurzem hat Microsoft das Cmdlet „New-CsOnlineSession“ direkt in das MicrosoftTeams-Modul integriert, das Sie im vorherigen Abschnitt installiert haben. Microsoft wird Skype for Business Online zwar im Juli 2021 einstellen, allerdings werden viele Einstellungen und Richtlinienverwaltungen für Microsoft Teams immer noch über den Skype for Business Online-Dienst vorgenommen.
Um sich mit dem Skype for Business Online-Dienst in PowerShell zu verbinden, müssen Sie eine Remote-PowerShell-Sitzung mit dem Cmdlet „New-CsOnlineSession“ in einer Variable speichern und anschließend die Sitzung importieren. Wenn die Verbindung erfolgreich ist, zeigt PowerShell das temporäre Modul an, das alle Cmdlets für Skype for Business Online enthält.
Die Multi-Faktor-Authentifizierung ist ein zusätzlicher Sicherheitsmechanismus, der eine andere Form der Authentifizierung als Ihr Kontopasswort erfordert. Die Multi-Faktor-Authentifizierung kann mithilfe von Push-Benachrichtigungen von einer mobilen Anwendung, Hardware-Tokens oder durch Codes erfolgen, die über SMS-Nachrichten empfangen werden.
Zumindest bei Administratorkonten sollte die Multi-Faktor-Authentifizierung unbedingt aktiviert werden, da es sich dabei um höhergestellte Konten handelt, die zusätzliche Sicherheitsmaßnahmen erfordern. Heutzutage aktivieren immer mehr Unternehmen die Multi-Faktor-Authentifizierung, um reguläre Benutzerkonten vor dem Diebstahl ihrer Anmeldedaten zu schützen.
Wenn in Ihrem Administratorkonto die Multi-Faktor-Authentifizierung aktiviert ist, werden Sie keine gespeicherten Anmeldedaten verwenden, wie ich es in den vorherigen Beispielen getan habe. Die Sitzung muss über ein interaktives OAuth-Fenster authentifiziert werden, das zur sekundären Verifizierung auffordert.
Zurück zur Verbindung mit dem AzureAD-Graph-Modul mit einem Konto mit Multi-Faktor-Authentifizierung: Ich werde Connect-AzureAD erneut ausführen, ohne ein Anmeldedatenobjekt anzugeben. Hier wird man aufgefordert, den Benutzernamen und das Kennwort einzugeben, und dann wartet die Anwendung, bis man den zweiten Faktor aus der mobilen App von Microsoft Authenticator eingibt.
Aufforderung zur Eingabe von Benutzername und Passwort:
Der Authentifizierungsprozess fordert mich dann auf, eine zweite Authentifizierungsform zu verwenden, indem ich den Authentifizierungsversuch genehmige:
Durch das Hinzufügen der Multi-Faktor-Authentifizierung wird eine weitere Sicherheitsebene hinzugefügt. Dies kann jedoch zu Problemen führen, wenn man ein PowerShell-Skript ohne Interaktion ausführen muss. Hier möchte man für zusätzlichen Schutz sorgen, kann jedoch nicht jedes Mal die Zwei-Faktor-Authentifizierung durchführen.
Um dieses Problem zu lösen, können Sie ein App-Kennwort erstellen. Mit App-Kennwörtern können Sie Ihr gewöhnliches Kontopasswort ersetzen und so in einer App die Multi-Faktor-Authentifizierung umgehen. Anwendungen, die die Multi-Faktor-Authentifizierung nicht unterstützen, können App-Kennwörter verwenden.
So konfigurieren Sie ein App-Kennwort:
Mit meinem neuen App-Kennwort kann ich ein neues PSCredential-Objekt erstellen. Anstatt mein normales Konto-Kennwort zu speichern, verwende ich das App-Kennwort. Nachdem die neue PSCredential-Variable erstellt wurde, benutze ich sie, um meine Verbindung herzustellen.
Indem Sie PowerShell gut beherrschen, werten Sie Ihre Kenntnisse als Administrator deutlich auf. Sie können schnell Änderungen in den verschiedenen Diensten oder Aktionen im Rahmen der Mandantenverwaltung vornehmen, die nicht im Admin Center zu finden sind.