Magic Quadrant™ für Privileged Access Management 2025: Netwrix zum vierten Jahr in Folge anerkannt. Laden Sie den Bericht herunter.

Plattform
Ressourcen­zentrumBlog
Verbindung mit Exchange Online PowerShell herstellen

Verbindung mit Exchange Online PowerShell herstellen

Mar 31, 2025

Exchange Online PowerShell ermöglicht eine sichere, automatisierte Verwaltung von Microsoft 365-E-Mail-Umgebungen. Mit dem EXO V2-Modul und moderner Authentifizierung sowie MFA können Administratoren Postfächer, Berechtigungen, Berichte und Migrationen in großem Umfang verwalten. Optionen auf Basis von Zertifikaten und verwalteten Identitäten unterstützen die Automatisierung, während Best Practices wie RBAC, TLS und Sitzungsverwaltung die Sicherheit und Compliance stärken.

Einführung in Exchange Online PowerShell

Exchange Online PowerShell ist eine Befehlszeilen-Management-Schnittstelle zur Verwaltung und Automatisierung von Aufgaben in Exchange Online, das Teil von Microsoft 365 ist. Es ermöglicht Administratoren, Benutzerpostfächer zu verwalten, Organisationseinstellungen zu konfigurieren und Massenoperationen effizient über Skripte durchzuführen. Hier sind einige Vorteile der Verwendung von PowerShell für das Management von Exchange Online:

  • Schreiben Sie Skripte, um wiederkehrende Aufgaben wie das Erstellen von Postfächern und das Zuweisen von Berechtigungen zu automatisieren.
  • Verwalten Sie Objekte in großen Mengen, wie das Aktualisieren oder Modifizieren mehrerer Benutzerkonten, Postfächer oder Gruppen in einem Durchgang, sowie das Exportieren und Importieren von Daten über CSV-Dateien.
  • Stellen Sie aus der Ferne eine Verbindung zu Exchange Online von jedem unterstützten Gerät her und führen Sie administrative Aufgaben sicher über verschlüsselte Sitzungen aus.
  • Erhalten Sie erweiterte Berichterstellung und Überwachung. Zum Beispiel können Sie angepasste Berichte in CSV-, Excel- oder HTML-Formaten erstellen und Sie können audit mailbox access und administrative Aktionen mit präzisen Filtern überwachen.
  • Zugriff auf versteckte oder erweiterte Einstellungen, die nicht in der EAC-Web-Oberfläche angezeigt werden.

Exchange Online Mailbox Auditing Quick Reference Guide

Learn more

Voraussetzungen für die Verbindung mit Exchange Online PowerShell

Um eine Verbindung mit Exchange Online PowerShell herzustellen, müssen bestimmte Voraussetzungen erfüllt sein.

Systemanforderungen

  • Betriebssystem: Windows 10, Windows 11 oder Windows Server 2016/2019/2022
  • Windows PowerShell 5.1 oder höher
  • .NET Framework 4.7.2 oder höher

Netzwerkanforderungen

  • Stellen Sie sicher, dass ausgehender HTTPS (TCP 443) Verkehr zugelassen ist
  • TLS 1.2 muss aktiviert sein
  • Internetzugang und die Fähigkeit, eine Verbindung zu outlook.office365.com, login.microsoftonline.com und graph.microsoft.com herzustellen

Erforderliches Modul

  • Exchange Online Management-Modul

Anforderungen an die Authentifizierung

  • Für Microsoft Entra ID sollte das Konto die notwendigen Berechtigungen haben, wie zum Beispiel:
  • Globaler Administrator
  • Exchange-Administrator
  • Konten mit aktivierter MFA benötigen das Exchange Online PowerShell-Modul für moderne Authentifizierung

Erforderliche Berechtigungen

Ihr Konto sollte über die entsprechenden RBAC (Role-Based Access Control)-Rollen verfügen:

  • Organisationsmanagement
  • Empfängerverwaltung

So verbinden Sie sich mit Exchange Online PowerShell

Die verschiedenen Methoden, um sich mit Exchange Online PowerShell zu verbinden, sind:

Connect-ExchangeOnline-Modul (Moderne Methode)

Sie können sich mit dem Exchange Online Management Module (EXO V2) mit Exchange Online verbinden. Diese Methode wird für alltägliche Administrations- und Verwaltungsaufgaben empfohlen. Sie unterstützt moderne Authentifizierung (OAuth) und MFA.

Azure Cloud Shell (Browser-basierte Verbindung)

Diese Methode ermöglicht es Administratoren, Exchange Online PowerShell direkt aus dem Azure Portal zu verwenden, ohne eine lokale Installation zu benötigen. Exchange Online PowerShell ist von jedem Gerät mit einem Browser aus zugänglich und verfügt über vorinstallierte Module und Werkzeuge. Diese Methode wird für Administratoren empfohlen, die es vorziehen, über den Browser zu verwalten oder nur eingeschränkten Zugang zu PowerShell-Tools lokal haben. Der Zugriffspfad lautet: Azure Portal > Cloud Shell > PowerShell.

Exchange Online Remote PowerShell (Deprecated)

Diese veraltete Methode, die Remote PowerShell (WSMan-Protokoll) verwendet, um eine Verbindung mit Exchange Online PowerShell herzustellen, ist veraltet und wird für neue Bereitstellungen nicht empfohlen, kann jedoch für ältere Skripte oder Systeme verwendet werden, die das neuere Exchange Online Management Modul nicht unterstützen. Diese Methode unterstützt keine MFA.

Verwendung von Service Principal (Zertifikatbasierte Authentifizierung)

Diese Methode ermöglicht unbeaufsichtigte oder skriptbasierte Verwaltung über Service Principal Accounts und zertifikatbasierte Authentifizierung. Sie wird für Automatisierung, CI/CD Pipelines und Hintergrundprozesse empfohlen. Als Voraussetzung ist erforderlich: Azure AD App-Registrierung und Zertifikateinrichtung.

Vergleich der Verbindungsmethoden

Methode

Am besten für

Unterstützt MFA

Unterstützt Automatisierung

Connect-ExchangeOnline (EXO V2 Modul)

Alltägliche Administrationsaufgaben

Ja

Ja

Azure Cloud Shell

Schneller Browserzugriff

Ja

Nein

Remote PowerShell (WSMan)

Legacy-Skripte

Nein

Ja

Service Principal (Zertifikatsauthentifizierung)

Automatisierung, CI/CD

Nein

Ja

Verständnis der modernen Authentifizierung und ihrer Vorteile

Moderne Authentifizierung ist eine Identity Management-Methode, die OAuth 2.0 und Active Directory Authentication Library (ADAL) oder Microsoft Authentication Library (MSAL) für sichere Anmeldungen nutzt. Sie ersetzt traditionelle Authentifizierungsmethoden wie die Basisauthentifizierung.

Moderne Authentifizierung ist der empfohlene und sichere Weg, um eine Verbindung mit Exchange Online PowerShell herzustellen, da sie folgende Vorteile bietet:

  • Erhöht die Sicherheit, da es OAuth 2.0 für die Token-basierte Authentifizierung verwendet, anstatt Anmeldeinformationen direkt zu übermitteln.
  • Ermöglicht die Verwendung von MFA und fügt eine zusätzliche Sicherheitsebene hinzu.
  • Ermöglicht Administratoren, Richtlinien basierend auf Gerätekonformität, Standort oder Risikostufe durchzusetzen, was den Zugriff auf Exchange Online Ressourcen basierend auf definierten Bedingungen einschränkt.
  • Nahtlose Integration mit Microsoft Entra ID und Drittanbieter-Identitätsanbietern, mit Unterstützung für Single Sign-On (SSO).

Microsoft stellt die Basisauthentifizierung ein, daher ist die Migration zur modernen Authentifizierung entscheidend.

Anforderungen für die Verbindung zu Exchange Online PowerShell mit oder ohne MFA

Hier sind die Anforderungen für die Verbindung zu Exchange Online PowerShell mit oder ohne MFA.

Ohne MFA (Basic Authentication – Veraltete Legacy-Methode)

Microsoft Entra ID account must not have MFA enabledBasic authentication must still be allowed (if not blocked organization-wide)

Mit MFA (Modern Authentication)

Das Microsoft Entra ID-Konto muss MFA konfiguriert habenOAuth 2.0 muss unterstützt werden (Standard in Exchange Online)

Schritt-für-Schritt-Anleitung zum Verbinden

Hier sind die kurzen Schritte, um sich mit Exchange Online PowerShell zu verbinden:

  1. Installieren Sie das Exchange Online PowerShell-Modul.
  2. Stellen Sie eine Verbindung zu Exchange Online her, indem Sie das Connect-ExchangeOnline-Cmdlet verwenden. Geben Sie Ihre Microsoft 365 Exchange-Admin-Anmeldeinformationen ein, wenn Sie dazu aufgefordert werden.
  3. Sobald Sie mit der Exchange Online-Umgebung verbunden sind, können Sie die in dem Exchange Online PowerShell-Modul verfügbaren Cmdlets verwenden, um Einstellungen und Objekte wie Postfächer, Kontakte und Kalender in Exchange Online zu verwalten.

Installieren Sie das Exchange Online Management Module

Das Exchange Online Management-Modul kann auf Windows-, Mac- und Linux-Systemen installiert werden. Öffnen Sie PowerShell als Administrator und führen Sie den folgenden Befehl aus, um das neueste Exchange Online Management-Modul zu installieren:

Install-Module -Name ExchangeOnlineManagement -Force

Führen Sie das folgende Cmdlet aus, um zu überprüfen, ob das Exchange Online Management-Modul installiert ist:

Get-Module -ListAvailable -Name ExchangeOnlineManagement

Wenn es korrekt installiert ist, sollten die Moduldetails angezeigt werden.

Das Exchange Online PowerShell-Modul verwendet moderne Authentifizierung, um eine Verbindung zu allen Exchange-bezogenen PowerShell-Umgebungen herzustellen.

Aktualisieren Sie das Modul

Um das vorhandene Exchange Online Management-Modul zu aktualisieren, verwenden Sie das folgende Cmdlet:

Update-Module ExchangeOnlineManagement

Importieren Sie das Modul

Laden Sie das Modul in Ihre PowerShell-Sitzung mit dem folgenden Cmdlet:

Import-Module ExchangeOnlineManagement

Ausführungsrichtlinie festlegen

Beim Verbinden mit Exchange Online PowerShell bestimmt die Ausführungsrichtlinie für PowerShell, wie Skripte auf Ihrem System ausgeführt werden. RemoteSigned ist die empfohlene Richtlinie, da sie sicherstellt, dass:

  • Lokal erstellte Skripte können ohne eine digitale Signatur ausgeführt werden
  • Skripte, die aus dem Internet heruntergeladen werden, müssen von einem vertrauenswürdigen Herausgeber signiert sein

Verwenden Sie das folgende Cmdlet, um die Ausführungsrichtlinie auf RemoteSigned zu setzen:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Verbindung herstellen mit Basic Authentication (Veraltet)

Microsoft hat die Basisauthentifizierung für Exchange Online ab Oktober 2022 dauerhaft deaktiviert. Sie wurde durch moderne Authentifizierung (OAuth 2.0) ersetzt.

Verbinden Sie sich mit moderner Authentifizierung

Moderne Authentifizierung (OAuth 2.0) ist die empfohlene und sichere Methode, um sich mit Exchange Online PowerShell zu verbinden. Verschiedene Methoden zur Verbindung sind:

Methode


Interaktive Authentifizierung (GUI-Aufforderung)

Dies ist die Standardverbindungsmethode für die meisten Mandanten, wie zum Beispiel Standard-Microsoft 365-Handelsmandanten. Verwenden Sie dieses Cmdlet, um eine Verbindung mit moderner Authentifizierung herzustellen: Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com Ersetzen Sie admin@yourdomain.com durch Ihr Exchange Online Admin-Konto. Ein Anmeldefenster wird erscheinen; vervollständigen Sie den Anmeldeprozess, einschließlich Multi-Faktor-Authentifizierung (MFA), falls erforderlich.

Gerätecode-Authentifizierung (für Nicht-GUI-Umgebungen)

Wenn Sie in einer nicht-GUI-Umgebung arbeiten, verwenden Sie den -Device-Parameter: Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com -Device Kopieren Sie den bereitgestellten Gerätecode. Öffnen Sie https://microsoft.com/devicelogin in einem Browser. Geben Sie den Gerätecode ein. Authentifizieren Sie sich mit Ihrem Konto und schließen Sie die MFA ab (falls erforderlich).

Verbinden mit zertifikatsbasierter Authentifizierung (nicht-interaktiv)

Für Automatisierung oder unbeaufsichtigte Skripte: Connect-ExchangeOnline -CertificateThumbprint „<CertificateThumbprint>“ -AppId „<AppId>“ -Organization „<YourTenant>“ Ersetzen Sie: „<CertificateThumbprint>“ durch Ihren Zertifikatsfingerabdruck, „<AppId>“ durch die Microsoft Entra ID App-ID, „<YourTenant>“ durch Ihre Domain (wie yourdomain.onmicrosoft.com).

Beispielverbindungen für verschiedene Exchange Online-Umgebungen (GCC, GCC High, DoD)

Verschiedene Exchange Online-Umgebungen erfordern spezifische Verbindungs-URIs und Konfigurationen bei der Verwendung moderner Authentifizierung. Beispiele für diese Umgebungen sind:

Methode

Verbindungsinformationen

Microsoft 365 GCC (Government Community Cloud)

Anwendungsfall: US-Regierungskunden (GCC) Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com Ersetzen Sie admin@contoso.onmicrosoft.com durch Ihr Exchange Online Admin-Konto. Ein Anmeldefenster wird erscheinen; vervollständigen Sie den Anmeldeprozess, einschließlich Multi-Faktor-Authentifizierung (MFA), falls erforderlich.

Microsoft 365 GCC High

Anwendungsfall: US-Regierungskunden mit hohen Sicherheitsanforderungen Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com -ExchangeEnvironmentName O365USGovGCCHigh -ExchangeEnvironmentName – Legt explizit die GCC High-Umgebung fest

Microsoft 365 DoD (Department of Defense)

Anwendungsfall: Reserviert für Mieter des US-Verteidigungsministeriums (DoD) Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com -ExchangeEnvironmentName O365USGovDoD -ExchangeEnvironmentName: Setzt explizit die Umgebung auf die Office 365 US Government DoD-Umgebung

Verwendung der Multi-Faktor-Authentifizierung

Schritt-für-Schritt-Verbindungsprozess mit aktivierter MFA

Verbindung mit Managed Identities

Die Verwendung von Managed Identities zur Verbindung mit Exchange Online PowerShell ermöglicht eine sichere, passwortlose Authentifizierung in Microsoft Entra.

Was sind Managed Identities?

Verwaltete Identitäten ermöglichen es Microsoft Entra-Ressourcen, sich bei unterstützten Diensten zu authentifizieren, ohne Anmeldeinformationen in Skripten oder Code zu speichern. Exchange Online unterstützt diese Funktion für unbeaufsichtigte Skriptausführungen mithilfe von Azure Automation oder ähnlichen Szenarien.

Systemzugewiesene vs. benutzerzugewiesene verwaltete Identitäten

Feature

Systemzugewiesene

Benutzerzugewiesene

An eine Ressource gebunden

Mit einer einzelnen Microsoft Entra-Ressource verknüpft (wie VM, Logic App). Es wird gelöscht, wenn die Ressource gelöscht wird.

Kann über mehrere Ressourcen hinweg geteilt werden

Managementbereich

Automatisch verwaltet für seine Ressource

Unabhängig verwaltet und wiederverwendbar

Anwendungsfall

Geeignet für Szenarien mit einer einzigen Ressource

Ideal für die gemeinsame Nutzung oder Mehrfachressourcen

Verbinden Sie sich mit Exchange Online PowerShell unter Verwendung von Managed Identities

Voraussetzungen

  • Stellen Sie sicher, dass Ihre Azure-Ressource (z. B. VM, Function App, App Service) über eine systemzugewiesene oder benutzerzugewiesene verwaltete Identität verfügt.
  • Weisen Sie der Managed Identity die notwendige Microsoft Entra ID-Rolle für Exchange Online zu. Zum Beispiel:
  • Exchange-Administrator
  • Global Reader oder Global Administrator (wenn umfassendere Berechtigungen erforderlich sind).
  • Installieren und importieren Sie das Exchange Online PowerShell-Modul.

So verbinden Sie

Verwenden Sie Connect-ExchangeOnline mit dem -ManagedIdentity Parameter.

  • Beispiel für eine systemzugewiesene verwaltete Identität:

Connect-ExchangeOnline -ManagedIdentity -Organization <YourDomain>.onmicrosoft.com

  • Beispiel für eine benutzerzugewiesene verwaltete Identität:
      # Specify the Client ID of the User-Assigned Managed Identity

Connect-ExchangeOnline -ManagedIdentity -Organization <YourDomain>.onmicrosoft.com -ManagedIdentityAccountId <UserAssignedManagedIdentityClientIdValue>
      

Für unbeaufsichtigte Szenarien, wie Automatisierungsaufgaben oder CI/CD-Pipelines:

  • Speichern Sie das Skript an einem sicheren Ort, wie Azure Automation, Azure DevOps oder einer VM mit aktivierter Managed Identity.
  • Verwenden Sie Managed Identities zur Authentifizierung, um die explizite Verwaltung von Anmeldeinformationen zu vermeiden.

Beispielskript:

      # Connect to Exchange Online

Connect-ExchangeOnline -ManagedIdentity

# Example Exchange Online commands

Get-Mailbox -RecipientTypeDetails UserMailbox | Select-Object DisplayName, PrimarySmtpAddress

# Disconnect the session

Disconnect-ExchangeOnline -Confirm:$false
      

Sehen Sie sich den Artikel Use Azure managed identities to connect to Exchange Online PowerShell von Microsoft für weitere Informationen an.

Windows PowerShell Scripting Tutorial (PDF) for Beginners

Learn more

Syntax und allgemeine Verbindungsparameter

Syntax

Das Cmdlet Connect-ExchangeOnline hat die folgende Syntax:

Connect-ExchangeOnline

[[-ConnectionUri] <String>]

[[-AzureADAuthorizationEndpointUri] <String>]

[[-ExchangeEnvironmentName] <ExchangeEnvironment>]

[[-PSSessionOption] <PSSessionOption>]

[[-DelegatedOrganization] <String>]

[[-Prefix] <String>]

[[-CommandName] <String[]>]

[[-FormatTypeName] <String[]>]

[-AccessToken <String>]

[-AppId <String>]

[-BypassMailboxAnchoring]

[-Zertifikat <X509Certificate2>]

[-CertificateFilePath <String>]

[-CertificatePassword <SecureString>]

[-CertificateThumbprint <String>]

[-Credential <PSCredential>]

[-Device]

[-EnableErrorReporting]

[-InlineCredential]

[-LoadCmdletHelp]

[-LogDirectoryPath <String>]

[-LogLevel <LogLevel>]

[-ManagedIdentity]

[-ManagedIdentityAccountId <String>]

[-Organization <String>]

[-PageSize <UInt32>]

[-ShowBanner]

[-ShowProgress <Boolean>]

[-SigningCertificate <X509Certificate2>]

[-SkipLoadingCmdletHelp]

[-SkipLoadingFormatData]

[-TrackPerformance <Boolean>]

[-UseMultithreading <Boolean>]

[-UserPrincipalName <String>]

[-UseRPSSession]

[<CommonParameters>]

Allgemeine Parameter

Einige grundlegende Parameter sind:

Parameter

Beschreibung

-UserPrincipalName

Gibt das Konto an, das Sie verwenden möchten, um eine Verbindung mit Exchange Online PowerShell herzustellen. Dieser Parameter ermöglicht es Ihnen, das Eingeben eines Benutzernamens in der Aufforderung für moderne Authentifizierung zu überspringen.

-Credential

Gibt den Benutzernamen und das Passwort an, das zur Verbindung mit Exchange Online PowerShell verwendet wird

-DelegatedOrganization

Gibt die Kundenorganisation an, die Sie verwalten möchten, wenn Sie als delegierter Administrator handeln

-ConnectionUri

Gibt den Exchange Online-Verbindungsendpunkt an (wird in spezialisierten Umgebungen wie GCC oder China-Mandanten verwendet)

-CertificateThumbprint

Stellt eine Verbindung mit einem Zertifikat anstelle von Benutzername/Passwort her. Ein gültiger Wert ist der Fingerabdruckwert des Zertifikats.

-AppId

Wird zusammen mit -CertificateThumbprint verwendet, um eine Microsoft Entra ID-Anwendungs-ID anzugeben

-AccessToken

Gibt ein OAuth 2.0-Zugriffstoken für die Authentifizierung an

-Organisation

Gibt die Organisation an, wenn Sie eine Verbindung mit CBA oder verwalteter Identität herstellen

Einige optionale Parameter sind:

Parameter

Beschreibung

-ShowProgress

Gibt an, ob die Fortschrittsanzeige der importierten Cmdlets beim Verbinden angezeigt oder ausgeblendet werden soll. Gültige Werte sind $true und $false.

-SkipLoadingFormatData

Beschleunigt Verbindungen, indem das Laden von Formatierungs- und Typdatendateien übersprungen wird

-InlineCredential

Übergibt Anmeldeinformationen direkt in der Befehlszeile, um Aufforderungen beim Verbinden mit Exchange Online PowerShell zu vermeiden

-LogDirectoryPath

Gibt den Speicherort der Protokolldatei an

-LogLevel

Gibt das Protokollierungsniveau an. Gültige Werte sind Default und All.

-ConnectionTimeout

Gibt den Timeout-Wert (in Sekunden) für den Verbindungsversuch an

-Gerät

Normalerweise wird dieser Schalter auf Computern ohne Webbrowser verwendet. Sie müssen keinen Wert für diesen Schalter angeben.

-ManagedIdentity

Gibt an, dass Sie Managed Identity zur Verbindung verwenden. Sie müssen keinen Wert für diesen Schalter angeben.

Spezifische Parameter für Verbindungen in Hochsicherheitsumgebungen:

Für GCC-Umgebungen

Parameter

Beschreibung

-ConnectionUri

Gibt den Endpunkt für GCC-Mieter an

-EntraIDAuthorizationEndpointUri

Gibt den Autorisierungsendpunkt für GCC an

-ExchangeEnvironmentName

Gibt explizit die GCC High-Umgebung an

Für DoD-Umgebungen

Parameter

Beschreibung

-ConnectionUri

Verweist auf den DoD-spezifischen Endpoint

-ExchangeEnvironmentName

Legt die Umgebung explizit auf DoD fest

Automatisierung von Verbindungen

App-Only-Authentifizierung für unbeaufsichtigte Skripte

Die zertifikatsbasierte Authentifizierung (CBA) oder App-Only-Authentifizierung unterstützt unbeaufsichtigte Skript- und Automatisierungsszenarien durch die Verwendung von Microsoft Entra-Apps und selbstsignierten Zertifikaten.

Die App-Only-Authentifizierung ermöglicht es Diensten, Skripten oder Hintergrundprozessen, APIs und Ressourcen sicher zu nutzen, ohne dass Benutzerinteraktion erforderlich ist. Dies ist ideal für Automatisierungsszenarien wie geplante Aufgaben, Datenabgleich oder Backend-Verarbeitung.

Schritte zur Konfiguration der App-Only-Authentifizierung

  1. Gehen Sie zu Ihrem Identity Provider, wie zum Beispiel Microsoft Entra ID, und registrieren Sie die App. Notieren Sie dann die Client-ID, Tenant-ID und generieren Sie ein Client Secret oder laden Sie ein Zertifikat hoch.
  2. Weisen Sie die erforderlichen API-Berechtigungen zu. Sie sollten Anwendungs-API-Berechtigungen anstelle von delegierten API-Berechtigungen erteilen.
  3. Erstellen und konfigurieren Sie ein selbstsigniertes X.509-Zertifikat. Dies wird verwendet, um Ihre Anwendung gegen Microsoft Entra ID zu authentifizieren, wenn das App-Only-Access-Token angefordert wird.
  4. Registrieren Sie das Zertifikat mit Ihrer Anwendung. Dies ermöglicht Ihnen die Verwendung des privaten Schlüssels (.pfx-Datei) oder des Fingerabdrucks zur Authentifizierung.
  5. Um der Anwendung angemessene RBAC-Rollen zuzuweisen, verwenden Sie eine der unterstützten integrierten Rollen in Microsoft Entra.

Jetzt können Sie sich mit den Cmdlets aus dem Abschnitt Connect Using Modern Authentication bei Exchange Online PowerShell verbinden.

Sehen Sie sich den Artikel von Microsoft über die App-only-Authentifizierung für unbeaufsichtigte Skripte in Exchange Online PowerShell und Security & Compliance PowerShell für weitere Informationen an.

Beispielskript für PowerShell zur unbeaufsichtigten Authentifizierung

      $TenantId = “your-tenant-id”

$ClientId = “your-client-id”

$ClientSecret = “your-client-secret”

$Resource = “https://graph.microsoft.com/”

# Get token

$Body = @{

grant_type = “client_credentials”

client_id = $ClientId

client_secret = $ClientSecret

scope = “$Resource/.default”

}

$TokenResponse = Invoke-RestMethod -Uri “https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token” -Method Post -Body $Body

$AccessToken = $TokenResponse.access_token

Write-Output “Access Token: $AccessToken”
      

Verbindung mit Zertifikaten

Die Verwendung von Zertifikaten für die Automatisierung bietet eine zusätzliche Sicherheitsebene im Vergleich zu Clientgeheimnissen. Zertifikate sind ideal für die ausschließliche App-Authentifizierung in Skripten oder Hintergrundjobs, da sie das Speichern sensibler Geheimnisse als Klartext vermeiden.

Schritt-für-Schritt-Anleitung zur Verwendung von Zertifikaten für die Automatisierung

  1. Erstellen Sie ein selbstsigniertes Zertifikat. Sie können Tools wie PowerShell, OpenSSL oder jedes Zertifikatsverwaltungstool verwenden, um es zu generieren.

So können Sie es mit PowerShell generieren:

      # Generate a self-signed certificate

$cert = New-SelfSignedCertificate -DnsName “yourapp.domain.com” -CertStoreLocation “Cert:\CurrentUser\My” -KeyExportPolicy Exportable

# Export the certificate and private key as a PFX file

$certPath = “C:\path\to\certificate.pfx”

$certPassword = ConvertTo-SecureString -String “yourpassword” -Force -AsPlainText

Export-PfxCertificate -Cert $cert -FilePath $certPath -Password $certPassword
      
  • Registrieren Sie die Anwendung bei Ihrem Identitätsanbieter, wie zum Beispiel Microsoft Entra ID. Sie müssen auch den öffentlichen Schlüssel des Zertifikats hochladen. Dafür:
  • Gehen Sie zum Abschnitt für die App-Registrierung.
  • Fügen Sie ein Schlüsselzertifikat mit der .crt-Datei (öffentlicher Schlüssel) hinzu.
  • Notieren Sie die App-ID und die Tenant-ID.
  • Die Anwendung wird den privaten Schlüssel verwenden, um ein JWT für die App-Only-Authentifizierung zu signieren.

Best Practices für die Sicherheit bei zertifikatsbasierten Verbindungen

  • Speichern Sie Zertifikate an einem sicheren Ort, wie zum Beispiel Azure Key Vault. Vermeiden Sie es, Pfade oder Schlüssel hart in Skripten zu kodieren.
  • Verwenden Sie Zertifikate mit einer kurzen Gültigkeitsdauer. Erneuern Sie Zertifikate, bevor sie ablaufen.
  • Widerrufen Sie kompromittierte oder ungenutzte Zertifikate sofort.
  • Beschränken Sie den Zugriff auf die App und ihre Ressourcen mit dem Principle of Least Privilege, und definieren Sie genaue API-Bereiche.
  • Protokollieren Sie die Zertifikatsnutzung zu Überwachungszwecken.
  • Überwachen Sie die App-Authentifizierung, um unbefugten Zugriff zu erkennen.
  • Verwenden Sie Verschlüsselung, um private Schlüsseldateien wie .pfx zu sichern.
  • Schützen Sie private Schlüssel mit starken Passwörtern.
  • Erfordern Sie MFA für die Verwaltung von App-Konfigurationen. Dies kann die Durchsetzung von MFA für Administratoren erfordern.

Sitzungen verwalten und trennen

Das ordnungsgemäße Verwalten und Beenden von Exchange Online PowerShell-Sitzungen ist entscheidend, um die Sicherheit zu gewährleisten, die Ressourcennutzung zu optimieren und eine Erschöpfung der Sitzungen zu verhindern. Hier sind einige bewährte Methoden, denen Sie folgen sollten.

Best Practices für das Management von Exchange Online PowerShell-Sitzungen

  • Verwenden Sie das Exchange Online Management Module (EXO V2) für moderne Authentifizierung und verbesserte Sicherheit.
  • Melden Sie sich mit einem Konto an, das nur die für Ihre Aufgaben notwendigen Berechtigungen hat, wie zum Beispiel Rollen wie Exchange Admin und Security Admin.
  • Exchange Online hat ein maximales Sitzungslimit (3 gleichzeitige Sitzungen pro Benutzer). Stellen Sie sicher, dass Sitzungen nach Abschluss der Aufgaben geschlossen werden, um dieses Limit nicht zu überschreiten.
  • Beachten Sie das Standard-Timeout für Exchange Online-Sitzungen (normalerweise 15 Minuten Inaktivität). Wenn Leerlauf-Timeouts häufig auftreten, optimieren Sie Skripte für Effizienz.
  • Führen Sie Skripte nach Möglichkeit in einer einzigen Sitzung aus. Vermeiden Sie es, Sitzungen lange Zeit untätig zu lassen.

Best Practices für das Beenden von Exchange Online PowerShell-Sitzungen

  • Trennen Sie immer Ihre Sitzung, wenn Sie fertig sind. Das einfache Schließen des PowerShell-Fensters ohne Trennung kann verwaiste Sitzungen hinterlassen. Trennen Sie immer explizit die Verbindung.
  • Das Remove-PSSession Cmdlet bereinigt Exchange Online-Sitzungen nicht vollständig. Bevorzugen Sie immer:

Disconnect-ExchangeOnline -Confirm:$false

  • Wenn Sie vermuten, dass verwaiste Sitzungen Ressourcen verbrauchen, beenden Sie diese mit:

Get-PSSession | Remove-PSSession

  • Wenn eine Sitzung abläuft, stellen Sie die Verbindung ausdrücklich wieder her, anstatt anzunehmen, dass die Sitzung noch gültig ist.

Zugriff auf Exchange Online PowerShell für einen Benutzer aktivieren oder deaktivieren

Sie müssen über ausreichende administrative Privilegien verfügen, wie die Rolle des Global Administrator oder Exchange Administrator, um den Benutzerzugriff auf Exchange Online PowerShell zu aktivieren oder zu deaktivieren. Darüber hinaus ist auch die Mitgliedschaft in den Rollengruppen Organization Management oder Recipient Management erforderlich.

Das Deaktivieren des PowerShell-Zugriffs betrifft nur die Fähigkeit des Benutzers, sich mit Exchange Online PowerShell zu verbinden. Es hat keinen Einfluss auf ihren Zugang zu anderen Diensten wie dem Microsoft 365 Admin Center.

Deaktivieren Sie den Zugang für einen Benutzer

Wenn Sie den PowerShell-Zugriff deaktivieren, kann der Benutzer keine Verbindung zu Exchange Online PowerShell mit seinen Anmeldeinformationen herstellen. Hier ist das Cmdlet, um den Zugriff zu deaktivieren:

Set-User -Identity <UserPrincipalName> -EXOModuleEnabled $false

Aktivieren Sie den Zugang für einen Benutzer

Wenn Sie den PowerShell-Zugriff aktivieren, kann sich der Benutzer mit Exchange Online PowerShell verbinden. Hier ist das Cmdlet, um den Zugriff zu ermöglichen:

Set-User -Identity <UserPrincipalName> -EXOModuleEnabled $true

Überprüfen Sie den PowerShell-Zugriffsstatus eines Benutzers

Um zu überprüfen, ob ein Benutzer PowerShell-Zugriff aktiviert oder deaktiviert hat, verwenden Sie den folgenden Befehl:

Get-User -Identity „<UserPrincipalName>“ | Format-List EXOModuleEnabled

Um alle Benutzer zu erhalten, die keinen Zugriff auf Exchange Online PowerShell haben, verwenden Sie das folgende Cmdlet:

Get-User -ResultSize unlimited -Filter ‘RemotePowerShellEnabled -eq $false’

Um alle Benutzer zu erhalten, die Zugriff auf Exchange Online PowerShell haben, verwenden Sie das folgende Cmdlet:

Get-User -ResultSize unlimited -Filter ‘RemotePowerShellEnabled -eq $true’

Trennen Sie die Verbindung von Exchange Online

Wenn Sie Exchange Online PowerShell V2 (EXO V2) verwenden:

Wenn Sie sich mit dem Connect-ExchangeOnline-Cmdlet verbunden haben, können Sie die Verbindung mit dem folgenden Befehl trennen:

Disconnect-ExchangeOnline -Confirm:$false

Der -Confirm-Parameter ist optional und wird verwendet, um Bestätigungsaufforderungen zu unterdrücken. Standardmäßig könnten einige Cmdlets vor dem Fortfahren mit einer Aktion (wie dem Trennen einer Sitzung) um Bestätigung bitten.

$false gibt an, dass Sie nicht zur Bestätigung aufgefordert werden möchten. Dies ermöglicht es dem Befehl, automatisch auszuführen, ohne Sie zu fragen, ob Sie sicher sind, dass Sie die Verbindung trennen möchten.

Wenn Sie das ältere Exchange Online PowerShell-Modul verwenden:

Wenn Sie die ältere Remote-PowerShell-Sitzung verwendet haben (zum Beispiel beim Verbinden mit New-PSSession), können Sie die Verbindung trennen, indem Sie die Sitzung wie folgt entfernen:

Remove-PSSession $Session

In diesem Fall ist $Session die Variable, in der Sie Ihr PowerShell-Sitzungsobjekt gespeichert haben, als Sie sich zum ersten Mal verbunden haben.

Häufige Verbindungsprobleme und Fehlerbehebung

Bei der Arbeit mit Exchange Online PowerShell können Verbindungsprobleme auftreten. Lassen Sie uns diese Probleme und ihre Lösungen betrachten.

Modul nicht installiert oder veraltet

Sie sehen Fehler wie:

  • Der Begriff 'Connect-ExchangeOnline' wird nicht erkannt.
  • Das Modul ‘ExchangeOnlineManagement’ ist nicht installiert.

Lösung:

Das Exchange Online Management Module (EXO V2) sollte installiert und aktualisiert werden. Verwenden Sie dieses Cmdlet, um zu überprüfen, ob das Modul korrekt installiert ist:

Get-Module -ListAvailable -Name ExchangeOnlineManagement

Falsche Anmeldeinformationen oder Authentifizierungsprobleme

Sie könnten auf Probleme wie folgt stoßen:

  • Es liegt ein Authentifizierungsfehler vor
  • MFA-Aufforderungen schlagen fehl

Lösung:

  • Verwenden Sie moderne Authentifizierung mit den richtigen Anmeldeinformationen.
  • Stellen Sie sicher, dass Ihr Konto MFA unterstützt und Sie nicht blockiert sind.
  • Löschen Sie alle zwischengespeicherten Anmeldeinformationen.
  • Wenn Ihr Konto bedingte Zugriffsrichtlinien hat, überprüfen Sie, ob sie den Zugriff auf Exchange Online erlauben.

Erschöpfung des Sitzungslimits

Zu viele offene Sitzungen verhindern Ihre Verbindung, und es kann zu einer Fehlermeldung kommen:

  • Maximale Anzahl gleichzeitiger Sitzungen überschritten.

Lösung:

  • Trennen Sie inaktive Sitzungen.
  • Stellen Sie sicher, dass Sie sich nach jeder Sitzung ordnungsgemäß trennen.
  • Überwachen Sie aktive Sitzungen.

Proxy oder Firewall blockiert die Verbindung

Die Verbindung hängt oder schlägt fehl aufgrund einer Proxy- oder Firewall-Beschränkung, und Sie erhalten diesen Fehler:

  • Verbindung zum entfernten Server nicht möglich.

Lösung:

  • Stellen Sie sicher, dass Ihre Proxy-Einstellungen korrekt konfiguriert sind:
  • Erlauben Sie Exchange Online PowerShell-Endpunkte durch die Firewall:
  • *.outlook.office365.com
  • *.office365.com
  • *.microsoftonline.com
  • Testen Sie die Konnektivität mit:

Test-NetConnection outlook.office365.com -Port 443

Veraltete TLS-Version

Sie könnten auf diesen Fehler stoßen:

  • Die zugrunde liegende Verbindung wurde geschlossen: Ein unerwarteter Fehler trat bei einem Sendevorgang auf.

Lösung:

  • Stellen Sie sicher, dass Ihr System TLS 1.2 unterstützt.
  • Überprüfen Sie Ihre .NET-Version (empfohlen wird 4.6.2 oder höher).

Fehlende Berechtigungen

Sie erhalten Fehlermeldungen wie:

  • Zugriff verweigert. Sie haben nicht ausreichende Berechtigungen.

Lösung:

  • Ihrem Konto muss die Rolle des Exchange-Administrators oder eine entsprechende Rolle zugewiesen sein.

Falsche PowerShell-Version

Es können Kompatibilitätsfehler auftreten, wenn Sie eine nicht unterstützte PowerShell-Version verwenden.

Lösung:

  • Stellen Sie sicher, dass Sie PowerShell 5.1 oder höher verwenden:
  • Stellen Sie sicher, dass das EXO V2 Modul mit PowerShell Core (7.x) kompatibel ist.

Kontosperrung oder deaktiviertes Konto

Sie erhalten Fehlermeldungen wie:

  • Ihr Konto wurde gesperrt oder deaktiviert.

Lösung:

  • Überprüfen Sie den Kontostatus im Microsoft 365 Admin Center.
  • Entsperren Sie das Konto oder setzen Sie das Passwort zurück, falls erforderlich.

Probleme bei der DNS-Auflösung

Sie erhalten folgende Fehlermeldung:

  • Der Remote-Name konnte nicht aufgelöst werden.

Lösung:

  • Überprüfen Sie die DNS-Auflösung für Exchange Online-Endpunkte.
  • Verwenden Sie öffentliche DNS-Server (z. B. 8.8.8.8 oder 1.1.1.1), wenn die DNS-Auflösung fehlschlägt.

Fehler im Zusammenhang mit PowerShell-Modulkonflikten

Modulkonflikte in PowerShell können verschiedene Fehler verursachen, wie zum Beispiel nicht erkannte Cmdlets, überlappende Funktionalitäten oder Versionsinkompatibilitäten.

Es können Fehler wie folgt auftreten:

  • Der Begriff ‘<cmdlet>’ wird nicht erkannt.
  • Cmdlet ist in mehreren Modulen verfügbar.
  • Mehrdeutige Cmdlet-Referenz.

Lösung:

  • Überprüfen Sie alle derzeit geladenen Module und ihre Versionen mit diesem Cmdlet:

Get-Module -ListAvailable

  • Wenn ein Cmdlet einen Konflikt verursacht, finden Sie heraus, zu welchem Modul das Cmdlet gehört:

Get-Command <Cmdlet-Name>

  • Importieren Sie explizit das erforderliche Modul und erzwingen Sie die korrekte Modulversion:

Import-Module -Name ExchangeOnlineManagement -RequiredVersion 2.x.x -Force

  • Wenn ein veraltetes oder konfliktbehaftetes Modul geladen wird, entfernen Sie es mit:

Remove-Module -Name <Module-Name>

  • Wenn mehrere Versionen eines Moduls installiert sind, deinstallieren Sie ältere Versionen mit:

Uninstall-Module -Name ExchangeOnlineManagement -RequiredVersion 1.x.x

REST API-Verbindungsfehler

Um Verbindungsfehler der REST API in PowerShell zu behandeln, müssen Sie Probleme im Zusammenhang mit Authentifizierung, Netzwerkkonnektivität oder fehlkonfigurierten Anfragen diagnostizieren und beheben.

Ausgabe

Lösung

Authentifizierungsprobleme Fehler: Authentifizierungsfehler oder ungültige Anmeldeinformationen.

Stellen Sie sicher, dass Sie die richtigen Anmeldeinformationen und moderne Authentifizierung (OAuth) verwenden. Überprüfen Sie, ob Ihr Konto über ausreichende Berechtigungen verfügt (zum Beispiel Exchange-Administrator oder eine ähnliche Rolle). Verwenden Sie das Secure Application Model oder eine zertifikatsbasierte Authentifizierung, wenn Sie programmgesteuerten Zugriff benötigen.

Probleme mit Endpoint oder Modul Fehler: Verbindung zum erforderlichen Endpoint konnte nicht hergestellt werden.

Stellen Sie sicher, dass Sie das korrekte Exchange Online PowerShell V2-Modul (ExchangeOnlineManagement) verwenden. Aktualisieren Sie das Modul auf die neueste Version: Überprüfen Sie die Verbindung zum Exchange Online REST-Endpunkt mit dem folgenden Cmdlet. Es sollte aufgelöst und erreichbar sein:
https://outlook.office365.com/powershell-liveid

Netzwerkverbindung Fehler: Zeitüberschreitungen oder Verbindungsablehnungen.

Die erforderlichen Endpunkte sollten nicht durch Firewalls oder Proxys blockiert werden. Dazu gehören: *.office365.com *.microsoftonline.com Testen Sie die InternetverbindungWenn Sie hinter einem Unternehmensproxy sind, stellen Sie sicher, dass der Proxy korrekt für PowerShell konfiguriert ist.

Token-Verfallszeit Fehler: Ablauf des Authentifizierungstokens während der Sitzung.

Verwenden Sie Connect-ExchangeOnline mit einer beständigen Sitzung, wie unten gezeigt: Connect-ExchangeOnline -UserPrincipalName <Ihre-Admin-E-Mail> -ShowProgress $true Aktualisieren Sie Ihre Sitzung, wenn das Token abläuft, mit dem folgenden Cmdlet: Disconnect-ExchangeOnline Connect-ExchangeOnline

TLS/SSL-Protokollprobleme Fehler: TLS-Fehler während der Verbindung.

Stellen Sie sicher, dass TLS 1.2 aktiviert ist

Serviceausfälle Fehler: Dienst nicht verfügbar oder intermittierende Verbindung.

Überprüfen Sie das Microsoft 365 Service Health Dashboard auf aktuelle Probleme.

HTTP-Fehler Diese Fehler treten auf, wenn der Server einen HTTP-Statuscode zurückgibt, der auf einen Fehler hinweist. Häufige Codes: 400 Bad Request: Die Anfrage ist fehlerhaft (z.B. ungültiges JSON oder Parameter)401 Unauthorized: Ungültige oder fehlende Authentifizierungsinformationen403 Forbidden: Der Zugriff wird verweigert, obwohl die Authentifizierung korrekt ist404 Not Found: Der angeforderte Endpunkt oder die Ressource existiert nicht500 Internal Server Error: Ein Problem auf dem API-Server

Stellen Sie sicher, dass der Payload und die Header den Anforderungen der API-Dokumentation entsprechen. Überprüfen Sie API-Schlüssel, Tokens oder andere Anmeldeinformationen. Stellen Sie sicher, dass Ihr Konto Zugriffsrechte auf die angeforderte Ressource hat. Verwenden Sie Logs oder ein Tool wie Postman, um Rohdaten der Anfrage/Antwort zu überprüfen.

SSL/TLS-Fehler Sichere Verbindungen (HTTPS) können aufgrund von Zertifikatsproblemen fehlschlagen.

Stellen Sie sicher, dass das SSL-Zertifikat des Servers gültig und vertrauenswürdig ist. Für lokale Tests können Sie die SSL-Validierung umgehen, vermeiden Sie dies jedoch in der Produktion. Stellen Sie sicher, dass Ihre Client-Bibliotheken (z. B. Python-Anfragen, Node.js https) auf dem neuesten Stand sind, um moderne TLS-Versionen zu unterstützen.

Zeitüberschreitungsfehler Diese treten auf, wenn der API-Server nicht innerhalb des erwarteten Zeitrahmens antwortet.

Passen Sie den Timeout-Parameter in Ihrem API-Client an, um die Timeout-Einstellungen zu erhöhen. Vermeiden Sie das Senden von übermäßig großen Datenmengen oder langsamen Anfragen. Kontaktieren Sie den API-Anbieter, wenn Timeouts häufig auftreten, da es Serverlastprobleme geben könnte.

Ratenbegrenzung und Kontingente APIs haben oft Nutzungslimits, die zu Fehlern führen können, wenn sie überschritten werden. Fehler: HTTP 429 Zu viele Anfragen

Überprüfen Sie die Rate Limits. Beachten Sie die API-Dokumentation für Anfragelimits. Implementieren Sie Drosselung, um die Anfragen zu verteilen und die Rate Limits einzuhalten. Kontaktieren Sie den API-Anbieter, um höhere Kontingente zu beantragen.

Wichtige PowerShell-Cmdlets für Exchange Online

Um eine Liste aller verfügbaren Exchange Online PowerShell-Cmdlets zu erhalten, verwenden Sie das folgende Cmdlet:

Get-command -Module ExchangeOnlineManagement

Hier ist ein schneller Überblick über wichtige Exchange Online-Cmdlets, einschließlich Get-Mailbox, Get-EXOMailboxStatistics und anderen, um Postfächer, Benutzer und deren Konfigurationen effektiv zu verwalten.

Get-Mailbox

Dieses Cmdlet ruft Informationen über Postfächer in Exchange Online ab. Sie können auch spezifische Postfächer anzeigen, wie Benutzerpostfächer, gemeinsam genutzte Postfächer usw.

Syntax

Get-Mailbox [-Identity] <String> [-RecipientTypeDetails <RecipientTypeDetails>] [andere Parameter]

Häufige Anwendungsbeispiele

  • Abrufen aller Postfächer:

Get-Mailbox -ResultSize Unlimited

  • Abrufen aller freigegebenen Postfächer:

Get-Mailbox -RecipientTypeDetails SharedMailbox

  • Mailboxen nach Domain filtern:

Get-Mailbox -Filter „EmailAddress -like ‘*@domain.com'“

Get-EXOMailboxStatistics

Dieses Cmdlet ruft detaillierte Statistiken über Postfächer in Exchange Online ab, die Informationen wie Postfachgröße, Elementanzahl und letzte Anmeldezeit bereitstellen.

Syntax

Get-EXOMailboxStatistics [-Identity] <String>

Häufige Anwendungsbeispiele

  • Mailbox-Statistiken für einen Benutzer abrufen:

Get-EXOMailboxStatistics -Identity user@domain.com

  • Abrufen der Größen aller Postfächer:

Get-EXOMailboxStatistics | Select DisplayName, ItemCount, TotalItemSize

  • E-Mail-Postfächer mit einer Größe über einem bestimmten Schwellenwert abrufen:

Get-EXOMailboxStatistics | Where-Object { $_.TotalItemSize -gt 10GB }

Get-MailboxStatistics

Dieses Cmdlet ist ähnlich wie Get-EXOMailboxStatistics, funktioniert jedoch mit lokalen Exchange- oder Hybridumgebungen. Es liefert Details zur Größe und Anzahl der Elemente in Postfächern.

Syntax

Get-MailboxStatistics [-Identity] <String>

Häufige Anwendungsbeispiele

  • Statistiken für einen bestimmten Benutzer abrufen:

Get-MailboxStatistics -Identity “user@domain.com”

  • Ermitteln Sie alle Postfachgrößen und die letzten Anmeldezeiten:

Get-MailboxStatistics | Select DisplayName, LastLogonTime, TotalItemSize

Get-MailboxPermission

Dieses Cmdlet ruft die einem Postfach zugewiesenen Berechtigungen ab, einschließlich des Stellvertreterzugriffs.

Syntax

Get-MailboxPermission [-Identity] <String>

Häufige Anwendungsbeispiele

  • Alle Berechtigungen für ein Postfach anzeigen:

Get-MailboxPermission -Identity user@domain.com

  • Filter für nicht standardmäßige Berechtigungen:

Get-MailboxPermission -Identity “user@domain.com” | Where-Object { $_.IsInherited -eq $false }

Set-Mailbox

Dieses Cmdlet ändert Postfacheinstellungen wie Quotenlimits, Weiterleitung und das Aktivieren von Funktionen.

Syntax

Set-Mailbox [-Identity] <String> [-Parameters]

Häufige Anwendungsbeispiele

  • Mailbox-Weiterleitung aktivieren:

Set-Mailbox -Identity “user@domain.com” -ForwardingSMTPAddress “forwardto@domain.com” -DeliverToMailboxAndForward $true

  • Ändern Sie das Postfachkontingent:

Set-Mailbox -Identity “user@domain.com” -ProhibitSendQuota 50GB

New-Mailbox

Dieses Cmdlet erstellt ein neues Postfach für einen Benutzer in Exchange Online. Dieses Cmdlet kann für verschiedene Szenarien verwendet werden, einschließlich der Erstellung von Postfächern für einzelne Benutzer, gemeinsam genutzte Postfächer und Ressourcenpostfächer wie Raum- oder Gerätepostfächer.

Syntax

New-Mailbox -Name <Name> -MicrosoftOnlineServicesID <UserPrincipalName> -Password (ConvertTo-SecureString -String „<Password>“ -AsPlainText -Force)

Häufige Anwendungsbeispiele

  • Erstellen Sie ein Benutzerpostfach:

New-Mailbox -Name “John Doe” -MicrosoftOnlineServicesID “johndoe@domain.com” -Password (ConvertTo-SecureString -String “P@ssw0rd!” -AsPlainText -Force)

  • Erstellen Sie ein gemeinsames Postfach:

New-Mailbox -Shared -Name „Support Team“ -MicrosoftOnlineServicesID „support@domain.com“

  • Erstellen Sie ein Raum-Postfach:

New-Mailbox -Room -Name „Konferenzraum 1“ -MicrosoftOnlineServicesID conference1@domain.com

  • Erstellen Sie ein gemeinsames Postfach für ein Team:

New-Mailbox -Shared -Name „HR Team“ -MicrosoftOnlineServicesID „hr@domain.com“ -Alias „HRTeam“

Remove-Mailbox

Dieses Cmdlet löscht ein Postfach aus Exchange Online. Diese Aktion kann auf verschiedene Postfachtypen angewendet werden, einschließlich Benutzerpostfächer, gemeinsam genutzte Postfächer und Ressourcenpostfächer (wie Raum- oder Gerätepostfächer).

Syntax

Remove-Mailbox -Identity <MailboxIdentity>

Häufige Anwendungsbeispiele

  • Löschen Sie ein Benutzerpostfach (führt ein Soft-Delete des Postfachs durch, wodurch es innerhalb der Aufbewahrungsfrist wiederherstellbar ist.):

Remove-Mailbox -Identity “johndoe@domain.com”

  • Dauerhaft ein Postfach löschen (löscht ohne Einhaltung einer Aufbewahrungsfrist):

Remove-Mailbox -Identity “johndoe@domain.com” -Permanent

  • Löschen Sie nur ein Archivpostfach (das primäre Postfach des angegebenen Benutzers bleibt erhalten):

Remove-Mailbox -Identity „johndoe@domain.com“ -Archive

Get-MailTrafficSummaryReport

Dieses Cmdlet ruft eine Zusammenfassung des Mailverkehrs für Ihre Organisation ab (verfügbar in Microsoft 365-Umgebungen).

Syntax

Get-MailTrafficSummaryReport [-StartDate] <DateTime> [-EndDate] <DateTime>

Allgemeines Anwendungsbeispiel

  • E-Mail-Verkehr der letzten 7 Tage abrufen:
      $StartDate = (Get-Date).AddDays(-7)

$EndDate = Get-Date

Get-MailTrafficSummaryReport -StartDate $StartDate -EndDate $EndDate
      

Search-Mailbox

Dieses Cmdlet sucht nach spezifischem Inhalt in einem Postfach oder über mehrere Postfächer hinweg.

Syntax

Search-Mailbox [-Identity] <String> [-SearchQuery <Query>] [-TargetMailbox <String>]

Häufige Anwendungsbeispiele

  • Suchen Sie nach E-Mails, die ein bestimmtes Stichwort enthalten:

Search-Mailbox -Identity “user@domain.com” -SearchQuery “Subject:’Invoice'”

  • Suchergebnisse in ein anderes Postfach kopieren:

Search-Mailbox -Identity “user@domain.com” -SearchQuery “Keyword” -TargetMailbox “admin@domain.com” -TargetFolder “SearchResults”

Get-MailboxAutoReplyConfiguration

Dieses Cmdlet ruft die Einstellungen für automatische Antworten (Abwesenheitsnotiz) eines Postfachs ab.

Syntax

Get-MailboxAutoReplyConfiguration [-Identity] <String>

Häufiges Nutzungsszenario

  • Automatische Antwort-Einstellungen für einen bestimmten Benutzer abrufen:

Get-MailboxAutoReplyConfiguration -Identity “user@domain.com”

Get-Recipient

Dieses Cmdlet ruft alle Empfänger (Postfächer, Gruppen, Kontakte usw.) ab.

Syntax

Get-Recipient [-Filter] <String>

Häufige Anwendungsbeispiele

  • Erhalten Sie alle Empfänger:

Get-Recipient

  • Filtern Sie nach spezifischen Empfängertypen:

Get-Recipient -RecipientTypeDetails MailUser

Cmdlet-Filter

Verwenden Sie Filter, um Ergebnisse anhand spezifischer Attribute einzugrenzen.

Syntax

Filter sind in { } eingeschlossen und verwenden eine Struktur aus Eigenschaft, Operator und Wert:

-Filter {Property -Operator ‘Value’}

Beispiel

Get-Mailbox -Filter {DisplayName -like “*Test*”}

Gängige Operatoren

  • -eq: Gleich
  • -ne: Nicht gleich
  • -like: Platzhaltervergleich (* für null oder mehr Zeichen)
  • -notlike: Negiert -like
  • -gt: Größer als
  • -lt: Weniger als

Beispiele für die Verwendung von Filtern mit Cmdlets

  • Mailboxen für eine spezifische Domain abrufen

Get-Mailbox -Filter {EmailAddresses -like ‘*@example.com’}

  • Finden Sie Postfächer, die nach einem bestimmten Datum erstellt wurden

Get-Mailbox -Filter {WhenCreated -gt ‘2023-01-01’}

  • Mailboxen mit spezifischen Anzeigenamensmustern abrufen

Get-Mailbox -Filter {DisplayName -like ‘*Test*’}

  • Deaktivierte Postfächer abrufen

Get-Mailbox -Filter {AccountDisabled -eq $true}

Beispiele für die Kombination mehrerer Bedingungen

Sie können Filter mit logischen Operatoren wie -and und -or kombinieren.

  • Benutzer mit spezifischem UPN und Anzeigenamen abrufen

Get-Mailbox -Filter {UserPrincipalName -like ‘*@example.com’ -and DisplayName -like ‘*John*’}

  • Finden Sie Postfächer, die aktiviert, aber über einer Größenschwelle sind

Get-Mailbox -Filter {AccountDisabled -eq $false -and ProhibitSendQuota -gt 10GB}

  • Beispiele für die Filterung mit Pipeline

Filter können auch mit Where-Object für erweiterte Filterung kombiniert werden.

  • Mailboxen nach benutzerdefiniertem Attribut filtern

Get-Mailbox | Where-Object { $_.CustomAttribute1 -eq ‘Value1’ }

  • Aktive Postfächer, die sich in den letzten 30 Tagen angemeldet haben

Get-MailboxStatistics | Where-Object { $_.LastLogonTime -gt (Get-Date).AddDays(-30) }

Erweiterte Konfigurationen

  • Verwenden Sie Select-Object, um die Ausgabe zu verfeinern und nur relevante Eigenschaften anzuzeigen.

Get-Mailbox | Select-Object DisplayName, PrimarySmtpAddress

  • Exportieren Sie die Ergebnisse für Berichte in eine CSV-Datei.

Get-Mailbox | Export-Csv -Path “Mailboxes.csv” -NoTypeInformation

  • Standardmäßig ist das Limit 1000 Ergebnisse; verwenden Sie -ResultSize Unlimited, um alle Elemente abzurufen.

Migrieren Sie mithilfe von PowerShell zu Exchange Online

Die Migration zu Exchange Online mit PowerShell umfasst mehrere Schritte, einschließlich der Vorbereitung der lokalen Umgebung, der Konfiguration der Migrationsendpunkte und der Verwaltung des Migrationsprozesses.

Voraussetzungen

Bevor Sie die Migration durchführen, stellen Sie sicher, dass Sie folgendes haben:

  • Ein aktives Microsoft 365- oder Office 365-Abonnement mit Exchange Online.
  • Administratoranmeldeinformationen für Ihren lokalen Exchange-Server und Exchange Online.
  • Das Exchange Online PowerShell V2-Modul (EXO V2) ist installiert.
  • Die Einrichtung des Exchange Online (Hybrid)-Konfigurationssatzes erfolgt bei Verwendung der Hybridmigration.

Hybridmigration (für Organisationen mit sowohl lokalem Exchange als auch Exchange Online)

In einer hybriden Umgebung können Sie Postfächer migrieren, während Sie die Koexistenz zwischen lokalen und cloudbasierten Postfächern aufrechterhalten.

  1. Installieren und konfigurieren Sie den Hybrid Configuration Wizard (HCW).

Der Hybrid Configuration Wizard (HCW) ist das Hauptwerkzeug zur Konfiguration einer hybriden Exchange-Umgebung. Er stellt sicher, dass Ihr lokaler Exchange-Server für die hybride Koexistenz mit Exchange Online bereit ist. Sie können ihn aus dem Exchange Admin Center (EAC) herunterladen und ausführen.

  • Bereiten Sie den lokalen Exchange-Server vor:
  • Führen Sie das Cmdlet Get-ExchangeServer aus, um sicherzustellen, dass die richtige Version verwendet wird.
  • Führen Sie das Cmdlet New-RemoteMailbox aus, um ein Remote-Postfach für zu migrierende Benutzer zu erstellen.
  • Starten Sie eine Migration, indem Sie einen Migrationsbatch mit dem Cmdlet New-MigrationBatch erstellen:

New-MigrationBatch -Name “MigrationBatch” -SourceEndpoint <OnPremisesExchangeEndpoint> -TargetEndpoint <ExchangeOnlineEndpoint> -MailboxList <MailboxesToMigrate> -AutoStart -AutoComplete

Platzhalter ersetzen:

  • <OnPremisesExchangeEndpoint> – Der Endpunkt für Ihren lokalen Exchange-Server
  • <ExchangeOnlineEndpoint> – Der Endpunkt für Exchange Online
  • <MailboxesToMigrate> – Die Liste der zu migrierenden Postfächer
  • Um den Migrationsprozess zu überwachen:

Get-MigrationBatch | Get-MigrationUser

  • Sobald die Migration abgeschlossen ist, können Sie sie abschließen mit:

Set-MigrationBatch -Identity „MigrationBatch“ -Complete

Cutover-Migration (für kleine Umgebungen, typischerweise weniger als 150 Postfächer)

Bei der Cutover-Migration werden alle Postfächer in einem einzigen Batch von Exchange vor Ort zu Exchange Online migriert.

  1. Verwenden Sie das Cmdlet New-MigrationEndpoint, um einen Endpunkt für den lokalen Exchange-Server zu erstellen:

New-MigrationEndpoint -Name “CutoverEndpoint” -ExchangeServer “<OnPremisesExchangeServer>” -Type “ExchangeRemoteMove”

  • Verwenden Sie das Cmdlet New-MigrationBatch, um einen Migrationsbatch für alle Postfächer zu erstellen:

New-MigrationBatch -Name „CutoverMigrationBatch“ -SourceEndpoint „CutoverEndpoint“ -MailboxList „user1@example.com“, „user2@example.com“ -TargetDeliveryDomain „<ExchangeOnlineDomain>“ -AutoStart -AutoComplete

  • Verwenden Sie das Cmdlet Get-MigrationBatch, um die Migration zu überwachen:

Get-MigrationBatch „CutoverMigrationBatch“ | Get-MigrationUser

  • Nach Abschluss der Migration können Sie diese mit dem Set-MigrationBatch-Cmdlet abschließen:

Set-MigrationBatch -Identity „CutoverMigrationBatch“ -Complete

Staged Migration (für mittelgroße Umgebungen)

Bei der stufenweisen Migration werden Postfächer in Stufen (typischerweise in Chargen) von Exchange vor Ort zu Exchange Online migriert.

  1. Erstellen Sie einen Endpunkt für das lokale Exchange:

New-MigrationEndpoint -Name “StagedEndpoint” -ExchangeServer “<OnPremisesExchangeServer>” -Type “ExchangeRemoteMove”

  • Um Postfächer in Phasen zu migrieren, erstellen Sie eine Migrationscharge mit dem Cmdlet New-MigrationBatch:

New-MigrationBatch -Name “StagedMigrationBatch” -SourceEndpoint “StagedEndpoint” -MailboxList “user1@example.com”, “user2@example.com” -TargetDeliveryDomain “<ExchangeOnlineDomain>” -AutoStart -AutoComplete

  • Überwachen Sie die Migration mit:

Get-MigrationBatch „StagedMigrationBatch“ | Get-MigrationUser

  • Sobald die Migration abgeschlossen ist, schließen Sie sie ab:

Set-MigrationBatch -Identity „StagedMigrationBatch“ -Complete

Best Practices für die Sicherheit

Stellen Sie sichere Verbindungen sicher

Verwenden Sie sichere Authentifizierungsmethoden

Nutzen Sie moderne Authentifizierung mit OAuth anstelle von Basisauthentifizierung. Sie müssen auch die Multi-Faktor-Authentifizierung (MFA) für alle Benutzerkonten aktivieren, die auf Exchange Online zugreifen.

Verwenden Sie Conditional Access Policies

Konfigurieren Sie den bedingten Zugriff in Microsoft Entra, um Einschränkungen wie Standort, Gerätekonformität und Benutzerrisikostufen durchzusetzen. Stellen Sie sicher, dass Sie den Zugriff von unbekannten oder riskanten Standorten blockieren oder einschränken.

Beschränken Sie den PowerShell-Zugriff

Verwenden Sie Role-Based Access Control (RBAC), um den PowerShell-Zugriff nur auf die Benutzer zu beschränken, die ihn benötigen. Deaktivieren Sie als weitere Vorsichtsmaßnahme Remote-PowerShell für Konten, die keinen administrativen Zugang benötigen.

TLS-Verschlüsselung erzwingen

Stellen Sie sicher, dass alle Verbindungen zu Exchange Online TLS 1.2 oder höher verwenden. Sie sollten auch regelmäßig Systeme überprüfen, um die Einhaltung moderner Verschlüsselungsprotokolle zu bestätigen.

Verwenden Sie Privileged Access Workstations (PAWs)

Beschränken Sie administrative Aufgaben auf sichere, isolierte Arbeitsstationen, um die Gefährdung durch Malware oder Angriffe zu verringern.

Verwenden Sie Secure Application Tokens

Ersetzen Sie für unbeaufsichtigte Skripte Benutzeranmeldeinformationen durch sichere App-Registrierungen in Microsoft Entra ID.

Verwalten Sie Benutzerberechtigungen und Zugriffskontrolle in Exchange Online

Rollenbasierte Zugriffskontrolle (RBAC) implementieren

Weisen Sie Benutzern vordefinierte Rollen auf Basis des Prinzips der geringsten Berechtigung zu. Weisen Sie umfassende Rollen wie Global Administrator nur zu, wenn es absolut notwendig ist.

Überwachen und überprüfen Sie Berechtigungen regelmäßig

Überprüfen Sie regelmäßig Berechtigungen und entfernen Sie unnötigen Zugriff. Als routinemäßige Praxis verwenden Sie Berichte aus dem Microsoft 365 Security & Compliance Center, um Zugriffsprotokolle zu überprüfen.

Trennung administrativer Rollen

Verwenden Sie separate Konten für administrative Aufgaben und alltägliche Benutzeraktivitäten. Noch besser ist es, unterschiedliche Rollen für verschiedene administrative Funktionen wie Mailbox-Verwaltung und Compliance-Management zuzuweisen.

Verwenden Sie Just-in-Time (JIT) Access

Implementieren Sie JIT access-Richtlinien mit Microsoft Entra ID Privileged Identity Management (PIM), um temporäre erweiterte Berechtigungen zu gewähren.

Mailbox-Überwachung aktivieren

Aktivieren Sie die Überwachung für alle Postfächer, um Änderungen zu verfolgen und unbefugten Zugriff zu erkennen.

Empfehlungen für den sicheren Einsatz von PowerShell in Produktionsumgebungen

Sichern Sie Ihre Skripte

Vermeiden Sie das Hardcoden von Anmeldeinformationen; verwenden Sie sichere Speichermechanismen wie Azure Key Vault oder Windows Credential Manager. Nutzen Sie auch parametrisierte Skripte und sichere Eingabeverarbeitung, um Injektionsschwachstellen zu vermeiden.

Überwachen und protokollieren Sie PowerShell-Aktivitäten

Aktivieren Sie das PowerShell-Logging (Modul-, Skriptblock- und Transkriptprotokolle). Sie können das Logging auch mit einem SIEM-System für Echtzeitüberwachung integrieren.

Verwenden Sie signierte Skripte

Signieren Sie PowerShell-Skripte mit einem vertrauenswürdigen Zertifikat, um die Integrität zu gewährleisten. Um dies zu unterstützen, setzen Sie die PowerShell-Ausführungsrichtlinie auf AllSigned, da sie nur signierte Skripte zulässt.

Führen Sie PowerShell mit Least Privilege aus

Vermeiden Sie unnötigerweise die Verwendung von Konten mit erhöhten Berechtigungen. Verwenden Sie stattdessen granulare Berechtigungen für spezifische Aufgaben.

Halten Sie PowerShell und Module aktuell

Aktualisieren Sie regelmäßig PowerShell auf die neueste Version, um Sicherheitslücken zu beheben. Nicht nur das, aktualisieren Sie auch das Exchange Online Management-Modul, um die neuesten Funktionen und Korrekturen zu nutzen.

Netzwerkzugriff beschränken

Beschränken Sie den Zugriff auf Exchange Online-Endpunkte auf bekannte IP-Adressen mithilfe von Firewall-Regeln oder Microsoft Entra ID Named Locations.

Verschlüsseln Sie sensible Daten

Verwenden Sie SecureString oder andere Verschlüsselungsmethoden, um sensible Daten sicher zu speichern und zu übertragen.

Netwrix Auditor for Exchange

Fazit

PowerShell für Exchange Online bietet leistungsfähige Möglichkeiten zur Verwaltung und Automatisierung administrativer Aufgaben, die es Administratoren ermöglichen, komplexe Operationen wie Massenbenutzeraktualisierungen, Berichterstattung und Konfigurationsänderungen zu bewältigen. Durch die Einführung moderner Authentifizierung, einschließlich OAuth und MFA, können Organisationen den Zugriff auf Exchange Online sichern. Die Automatisierung durch PowerShell minimiert manuellen Aufwand, reduziert menschliche Fehler und verbessert die gesamte betriebliche Konsistenz und Skalierbarkeit.

Für erweiterte Konfigurationen und tiefergehendes Lernen besuchen Sie die offizielle Dokumentation von Microsoft, die PowerShell-Trainingsmodule und die Community-Foren.

Microsoft-Dokumentation

FAQs

Wie verbindet man sich Schritt für Schritt mit Exchange Online PowerShell?

Die Verbindung zu Exchange Online PowerShell ist unkompliziert, wenn Sie der richtigen Reihenfolge folgen. Zuerst stellen Sie sicher, dass das Exchange Online PowerShell-Modul installiert ist, indem Sie Install-Module -Name ExchangeOnlineManagement in einer PowerShell-Sitzung mit erhöhten Rechten ausführen. Nach der Installation verwenden Sie Connect-ExchangeOnline -UserPrincipalName your-admin@domain.com um die Verbindung herzustellen. Sie werden zur Mehrfaktorauthentifizierung aufgefordert, falls diese für Ihr Konto aktiviert ist. Nach erfolgreicher Authentifizierung überprüfen Sie Ihre Verbindung mit Get-Mailbox -ResultSize 1, um die grundlegende Funktionalität zu testen. Denken Sie immer daran, die Verbindung mit Disconnect-ExchangeOnline zu trennen, wenn Sie fertig sind, um die Sicherheitsbest Practices zu wahren.

Zugriff auf Exchange Online PowerShell verweigert – wie beheben?

Zugriffsfehler resultieren typischerweise aus unzureichenden Berechtigungen oder Authentifizierungsproblemen. Beginnen Sie damit, zu überprüfen, ob Ihr Konto die notwendigen Exchange Online-Administratorenrollen hat – mindestens benötigen Sie die Berechtigungen eines Exchange-Administrators oder eines Globalen Administrators. Wenn die Rollen korrekt sind, überprüfen Sie, ob Ihre Organisation Bedingte Zugriffsrichtlinien verwendet, die möglicherweise PowerShell-Verbindungen blockieren. Löschen Sie alle gespeicherten Anmeldeinformationen mit Remove-StoredCredential und versuchen Sie die Verbindung erneut herzustellen. Bei anhaltenden Problemen stellen Sie sicher, dass Sie die neueste Version des ExchangeOnlineManagement-Moduls verwenden, da ältere Versionen Kompatibilitätsprobleme mit modernen Authentifizierungsanforderungen haben können.

Kann keine Verbindung zu Exchange Online PowerShell herstellen – was sind gängige Lösungen?

Verbindungsfehler fallen in der Regel in drei Kategorien: Authentifizierungsprobleme, Netzwerkprobleme oder Modulkonflikte.
Überprüfen Sie zunächst, ob Sie die richtige Syntax verwenden: Connect-ExchangeOnline -UserPrincipalName anstelle veralteter Verbindungs­methoden. Prüfen Sie Ihre Netzwerkverbindung und Firewall-Einstellungen – Exchange Online erfordert den Zugriff auf bestimmte Microsoft-Endpunkte. Wenn Sie sich hinter einem Unternehmensproxy befinden, konfigurieren Sie PowerShell so, dass Ihre Proxy-Einstellungen verwendet werden. Modulkonflikte können auftreten, wenn sowohl die alten MSOnline-Module als auch das neue ExchangeOnlineManagement-Modul gleichzeitig installiert sind. Deinstallieren Sie ältere Module und verwenden Sie ausschließlich das ExchangeOnlineManagement-Modul, um eine saubere und stabile Umgebung sicherzustellen.

Wie installiert man das Exchange Online PowerShell-Modul?

Die Installation des Exchange Online PowerShell-Moduls erfordert nur einen Befehl, aber die richtigen Voraussetzungen sind entscheidend.
Führen Sie PowerShell als Administrator aus und geben Sie folgenden Befehl ein: Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber. Der Parameter -Force stellt sicher, dass Sie die neueste Version erhalten, während -AllowClobber eventuelle Konflikte mit vorhandenen Cmdlets behebt. Wenn Sie Fehler bei der Ausführungsrichtlinie erhalten, setzen Sie diese vorübergehend mit: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser. In Umgebungen, in denen Sie Ausführungsrichtlinien nicht ändern können, laden Sie das Modul manuell aus der PowerShell Gallery herunter und installieren es offline. Überprüfen Sie die erfolgreiche Installation mit: Get-Module ExchangeOnlineManagement -ListAvailable um zu bestätigen, dass das Modul korrekt installiert wurde.

Wie verbindet man sich mit Exchange Online PowerShell mit MFA??

Die Mehrfaktor-Authentifizierung (MFA) mit Exchange Online PowerShell ist einfach, wenn sie richtig konfiguriert ist.Das moderne Cmdlet Connect-ExchangeOnline verarbeitet MFA automatisch – verwenden Sie einfach: Connect-ExchangeOnline -UserPrincipalName your-admin@domain.com Daraufhin werden Sie in einem Browserfenster aufgefordert, die MFA-Verifizierung abzuschließen. Für unbeaufsichtigte Skripte oder Automatisierung konfigurieren Sie eine zertifikatsbasierte Authentifizierung oder verwenden Sie einen Dienstprinzipal mit: Connect-ExchangeOnline -CertificateThumbprint oder Connect-ExchangeOnline -AppId. Vermeiden Sie die Verwendung von Basic Authentication oder App-Passwörtern, da Microsoft diese veralteten Methoden schrittweise abschafft.Die moderne Authentifizierung ist nicht nur sicherer, sondern auch zuverlässiger und bietet eine bessere Integration mit den Identitätsverwaltungsrichtlinien Ihrer Organisation.

Teilen auf

Erfahren Sie mehr

Über den Autor

Asset Not Found

Jonathan Blackwell

Leiter der Softwareentwicklung

Seit 2012 hat Jonathan Blackwell, ein Ingenieur und Innovator, eine führende Rolle in der Ingenieurskunst übernommen, die Netwrix GroupID an die Spitze des Gruppen- und Benutzermanagements für Active Directory und Azure AD Umgebungen gebracht hat. Seine Erfahrung in Entwicklung, Marketing und Vertrieb ermöglicht es Jonathan, den Identity-Markt und die Denkweise der Käufer vollständig zu verstehen.