Skip to content

KB: AD-Gruppen zu Exchange Online migrieren (Group2Exchange)

Kategorie: Microsoft 365 / Active Directory
Betrifft: AD Distribution Groups & Mail-aktivierte Security Groups
Voraussetzung: PowerShell 5.1+, ActiveDirectory-Modul, ExchangeOnlineManagement-Modul
Repository: github.com/rony326/powershellscripts – Group2Exchange


Übersicht

Diese Script-Sammlung ermöglicht die Migration von AD-Gruppen nach Exchange Online (Microsoft 365). Der Prozess ist zweistufig: zuerst werden die Gruppen und ihre Mitglieder aus dem lokalen Active Directory in eine CSV exportiert, anschliessend werden diese Daten in Exchange Online importiert.

Es werden zwei Gruppentypen abgedeckt:

  • Distribution Groups – reine Verteilergruppen aus dem AD
  • Mail-aktivierte Security Groups – Sicherheitsgruppen mit E-Mail-Adresse

Ablauf

AD  ──► ExportDist2CSV.ps1 / Export2CSV.ps1 ──► CSV ──► ImportDist2M365.ps1 / Import2M365.ps1 ──► Exchange Online
  1. Export-Script auf einem Rechner mit AD-Zugriff ausführen → CSV wird erzeugt
  2. CSV prüfen
  3. Import-Script gegen Exchange Online ausführen

Distribution Groups

Export – ExportDist2CSV.ps1

Liest alle AD-Gruppen vom Typ Distribution mit einer gesetzten E-Mail-Adresse aus und exportiert Gruppe + Mitglieder (UPN) als CSV.

Parameter:

Parameter Standard Beschreibung
$TestGroup (leer – alle Gruppen) Optional: nur eine bestimmte Gruppe exportieren
$ExportPath .\AD_GroupMembers.csv Pfad zur Ausgabedatei

Ausführung:

# Alle Distribution Groups exportieren
.\ExportDist2CSV.ps1

# Nur eine bestimmte Gruppe testen
.\ExportDist2CSV.ps1 -TestGroup "Vertrieb-Newsletter"

Ausgabe-CSV (AD_GroupMembers.csv):

GroupEmail,Member
vertrieb@domain.tld,max.mustermann@domain.tld
vertrieb@domain.tld,erika.muster@domain.tld

Import – ImportDist2M365.ps1

Liest die CSV ein und fügt die Mitglieder den entsprechenden Verteilergruppen in Exchange Online hinzu. Besitzt einen Dry-Run-Modus, der standardmässig aktiv ist.

Parameter:

Parameter Standard Beschreibung
$ImportPath .\AD_GroupMembers.csv Pfad zur Import-CSV
$DryRun $true Wenn $true: keine Änderungen, nur Vorschau

Ausführung:

# Vorschau (kein Schreiben)
.\ImportDist2M365.ps1 -DryRun $true

# Produktiv ausführen
.\ImportDist2M365.ps1 -DryRun $false

Hinweis: Die Verteilergruppen müssen in Exchange Online bereits existieren. Dieses Script fügt nur Mitglieder hinzu, erstellt aber keine neuen Gruppen.


Mail-aktivierte Security Groups

Export – Export2CSV.ps1

Liest alle AD-Gruppen vom Typ Security mit gesetzter E-Mail-Adresse aus und exportiert Gruppenname, Gruppen-E-Mail und Mitglieder (UPN).

Parameter:

Parameter Standard Beschreibung
$TestGroup (leer – alle Gruppen) Optional: nur eine bestimmte Gruppe exportieren
$ExportPath .\MailEnabled_SecurityGroups.csv Pfad zur Ausgabedatei

Ausführung:

# Alle mail-aktivierten Security Groups exportieren
.\Export2CSV.ps1

# Nur eine bestimmte Gruppe testen
.\Export2CSV.ps1 -TestGroup "IT-Security"

Ausgabe-CSV (MailEnabled_SecurityGroups.csv):

GroupName,GroupEmail,Member
IT-Security,it-security@domain.tld,max.mustermann@domain.tld
IT-Security,it-security@domain.tld,erika.muster@domain.tld

Import – Import2M365.ps1

Liest die CSV ein, erstellt fehlende Gruppen in Exchange Online als Security-Verteilergruppe und fügt die Mitglieder hinzu.

Im Gegensatz zum Distribution-Group-Import erstellt dieses Script Gruppen automatisch, falls sie noch nicht existieren.

Ausführung:

.\Import2M365.ps1

Hinweis: Kein Dry-Run-Modus vorhanden – vor dem Produktiveinsatz empfiehlt sich ein Test mit einer einzelnen Gruppe via $TestGroup im Export-Script.


Voraussetzungen

ActiveDirectory-Modul

Wird für die Export-Scripts benötigt und ist Teil der RSAT-Tools:

# Windows 10/11
Add-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0

ExchangeOnlineManagement-Modul

Wird für die Import-Scripts benötigt:

Install-Module ExchangeOnlineManagement -Scope CurrentUser

Fehlerbehandlung

  • Nicht auflösbare AD-Benutzer (z. B. gelöschte Konten) werden beim Export übersprungen und mit einer Warnung ausgegeben.
  • Beim Distribution-Group-Import werden fehlgeschlagene Add-DistributionGroupMember-Aufrufe einzeln als Fehler geloggt – der Rest läuft weiter.
  • Der Import-Script für Security Groups bricht bei einzelnen Fehlern nicht ab, gibt aber keine explizite Fehlerbehandlung aus. Bei kritischen Migrationen empfiehlt sich ein vorheriger Test-Lauf mit einer Gruppe.

Empfohlene Reihenfolge

  1. Export mit -TestGroup auf einer einzelnen Gruppe testen
  2. CSV auf Vollständigkeit und korrekte UPNs prüfen
  3. Import mit DryRun $true (nur Distribution Groups) kontrollieren
  4. Produktivlauf starten