Massenanlage von AD Usern per PowerShell mit CSV Import

Im folgenden Beispiel lege ich AD User an, deren Attribute aus einer CSV ausgelesen werden.

Hierzu lege ich zuerst Textdatei and und speichere sie im CSV-Format unter UsersList.csv. Als Werte beim Import möchte ich die Attribute DisplayName, sAMAccountName, Surname, GivenName, initiales Passwort, OU, Domain und Mail-Domain mitgeben (weitere Attribute können einfach per Komma getrennt hinzugefügt werden). Der UPN wird hier aus GivenName, Surname und der Domain gebildet, die Email-Adresse aus GivenName, Surname und der Mail-Domain.

DisplayName,Surname,GivenName,sAMAccountName,Password,OUPath,Domain,MailDomain
User1,UserSN1,UserGN1,UserSAM1,Passwd1,"OU=User,DC=domain,DC=com",@domain.com,@maildomain.com
User2,UserSN2,UserGN2,UserSAM2,Passwd2,"OU=User,DC=domain,DC=com",@domain.com,@maildomain.com
User3,UserSN3,UserGN3,UserSAM3,Passwd3,"OU=User,DC=domain,DC=com",@domain.com,@maildomain.com

Hinweis: Die Werte für OUPath packen wir schon in der CSV in Hochkommas, da die Kommas in den Werten später beim Import als Trennzeichen interpretiert werden.

Danach legen wir die Benutzer mit den Attributen aus der CSV an und aktivieren aus Sicherheitsgründen die Passwortänderung bei der ersten Anmeldung. Die Ergebnisse lasse ich mir mit dem -PassThru Parameter ausgeben. Zusätzlich füge ich den neu angelegten Benutzer gleich in eine AD-Gruppe Example-Users.

Import-Module ActiveDirectory
Import-Csv "C:\Temp\UsersList.csv" | ForEach-Object {
  $ADUserAttributes = @{
    Name = $_.DisplayName
    GivenName = $_.GivenName
    Surname = $_.Surname
    Path = $_.OUPath
    SamAccountName = $_.sAMAccountName
    UserPrincipalName = $_.GivenName + "." $_.Surname + $_.Domain
    EmailAddress = $_.GivenName + "." + $_.Surname + $_.MailDomain
    AccountPassword = (ConvertTo-SecureString $_.Password -AsPlainText -Force)
    ChangePasswordAtLogon = $true
    Enabled = $true
    }
  New-ADUser @ADUserAttributes -PassThru
  Add-ADGroupMember "Example-Users" $_.sAMAccountName;
}

Das ganze kann natürlich als Script gespeichert werden (z.B. Create-ADUsers-CSV.ps1). Um dieses auszuführen öffnen wir eine PowerShell als Admin:

Set-ExecutionPolicy Unrestricted
.\Create-ADUsers-CSV.ps1

3 Antworten

  1. M. Albert sagt:

    Hallo,

    der Script funktioniert nicht. Es gibt eine Fehlermeldung aus

    In C:\temp\import4.ps1:9 Zeichen:46
    + UserPrincipalName = $_.“GivenName“ + „.“ $_.“Surname“ + „@“ + $_. …

    • Servus
      Das Script hat mit dem „@“ wohl in den aktuellen PowerShell Versionen ein Problem. Das „@“ muss mit in die CSV, dann geht’s. Hab das Script aktualisiert und bei mir hat’s die User so angelegt.
      Gruß
      Andreas Schreiner

      • Marco Becker sagt:

        Wo muss das @ hin?
        In den Namen der CSV Datei?
        Vor jedem Attribut in der Datei selbst?
        Ich habe den selbigen Fehler aber kann mit der Lösung leider nichts anfangen

        Viele Grüße

Schreibe einen Kommentar zu M. Albert Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.