Windows Server
Active Directory: Benutzer per CSV-Datei importieren (Bulk-Import)
Mit einer CSV-Datei und PowerShell legst du viele Benutzer auf einmal in Active Directory an.
Checkliste vor dem produktiven Lauf
- Länge des
SamAccountNameprüfen (≤ 20 Zeichen). - Keine Umlaute in
SamAccountNameund UPN. - Encoding: CSV als UTF‑8 speichern und mit
-Encoding UTF8einlesen, sonst gehen in Windows PowerShell 5.1 die Umlaute in Namen kaputt. - Passwortrichtlinie: Das Passwort muss den AD‑Richtlinien entsprechen.
- Rechte: Das Skript als Domänenadministrator ausführen.
- Konflikte: Auf vorhandene
SamAccountName-Werte prüfen und bei Bedarf Nummern anhängen. - Test‑OU: Zuerst in eine Test‑OU importieren.
Lösung
1. CSV erstellen
SamAccountName,GivenName,Surname,DisplayName,Description,Title,OU,UserPrincipalName
max.mustermann,Max,Mustermann,"Mustermann, Max",Techniker,Techniker,"OU=Users,DC=domain,DC=de",max.mustermann@domain.de2. Import testen
$csv = "C:\Users\administrator\Desktop\users.csv"
Import-Csv $csv -Encoding UTF8 | Format-TablePrüfe, ob die CSV sauber formatiert ist und als Tabelle angezeigt wird.
3. Importieren
Das Startpasswort fragt das Skript einmal ab, statt es im Klartext im Skript zu speichern. Die Benutzer müssen es bei der ersten Anmeldung ändern.
$csv = "C:\Users\administrator\Desktop\users.csv"
$startPassword = Read-Host "Startpasswort für die neuen Benutzer" -AsSecureString
Import-Csv $csv -Encoding UTF8 | ForEach-Object {
New-ADUser `
-SamAccountName $_.SamAccountName `
-UserPrincipalName $_.UserPrincipalName `
-GivenName $_.GivenName `
-Surname $_.Surname `
-Name $_.DisplayName `
-DisplayName $_.DisplayName `
-Description $_.Description `
-Title $_.Title `
-Path $_.OU `
-Enabled $true `
-AccountPassword $startPassword `
-ChangePasswordAtLogon $true
}