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
- Export-Script auf einem Rechner mit AD-Zugriff ausführen → CSV wird erzeugt
- CSV prüfen
- 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:
Hinweis: Kein Dry-Run-Modus vorhanden – vor dem Produktiveinsatz empfiehlt sich ein Test mit einer einzelnen Gruppe via
$TestGroupim Export-Script.
Voraussetzungen¶
ActiveDirectory-Modul¶
Wird für die Export-Scripts benötigt und ist Teil der RSAT-Tools:
ExchangeOnlineManagement-Modul¶
Wird für die Import-Scripts benötigt:
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¶
- Export mit
-TestGroupauf einer einzelnen Gruppe testen - CSV auf Vollständigkeit und korrekte UPNs prüfen
- Import mit
DryRun $true(nur Distribution Groups) kontrollieren - Produktivlauf starten