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

2 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

Schreibe einen Kommentar

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.