Benutzer im Active Directory mit PowerShell und CSV-Datei anlegen, Mailbox einrichten

    Benutzerkonten anlegenMuss man mehrere Benutzer im Active Direc­tory an­legen, dann ist Power­Shell unter den Bord­mitteln das Tool der Wahl. Zumeist impor­tiert man dabei die Daten aus einer CSV-Datei, bevor man sie an das Cmdlet New-ADUser über­gibt. Bei dieser Ge­legen­heit kann man auch die Mailbox für Exchange ein­richten.

    Das Modul ActiveDirectory enthält unter anderem mehrere Cmdlets für das User-Management. Für das Anlegen neuer Konten ist New-ADUser zuständig. Es akzeptiert insgesamt rund 50 Parameter, deren Namen mit den Attributen im AD überein­stimmen. Dazu zählen etwa Name, GivenName, Enabled, Manager, Office, etc.

    User mit den wichtigsten Attributen anlegen

    Der simpelste Aufruf könnte so aussehen, wenn man einen Benutzer mit dem SamAccountName Max.Meier erzeugen möchte:

    New-AdUser -Name Max.Meier

    In der Regel möchte man aber einige weitere Attribute auf einen bestimmten Wert setzen:

    New-ADUser -Name Max.Meier -GivenName Max -Surname Meier `
    -Path "OU=Benutzer,DC=contoso,DC=Com"

    Der Benutzer wird so mit Vor- und Nachnamen in einer OU angelegt. Er ist allerdings noch deaktiviert, da er noch kein Passwort erhalten hat. Dieses lässt sich nicht im Klartext übergeben, sondern nur als Secure String:

    Dieser Befehl ordnet nun dem Benutzer über den Parameter AccountPassword ein entsprechendes Passwort zu. Es lassen sich jetzt natürlich noch zahlreiche weitere Attribute mit Werten versehen. Für die einfache Benutzer­anlage reicht dieses Beispiel allerdings schon jetzt aus, damit sich der User am System anmelden kann.

    Benutzerimport per CSV Datei

    Bei einer größeren Zahl an Benutzern wird man diese nicht anlegen, indem man New-AdUser für jeden separat aufruft. Am besten eignet hier der Import von Daten aus einer CSV-Datei (siehe dazu: CSV-Dateien in PowerShell erstellen, sortieren, filtern).

    Beispiel für die Struktur einer CSV-DAtei für den Import in das Active Directory

    Wenn diese nicht mit einem Komma formatiert ist, dann muss man bei Import-Csv das Trenn­zeichen über den Parameter Delimiter spezifizieren. Sind alle Voraus­setzungen gegeben, dann führt man folgende Anweisungen aus:

    Import-Csv .\benutzer.csv |
    New-ADUser -AccountPassword (ConvertTo-SecureString "Password123" -AsPlainText -force)

    Diese simple Variante des Scripts verzichtet auf die Verwendung von Parametern beim Aufruf von New-AdUser. In diesem Fall müssen die Spalten­überschriften in der CSV-Datei aber exakt mit den Namen der Parameter übereinstimmen.

    Eine Einschränkung dieses Scripts besteht darin, dass man das Passwort separat auf der Kommando­zeile übergeben muss, so dass es in diesem Beispiel für alle Konten identisch ist.

    Individuelle Passwörter setzen, Mailbox erzeugen

    Möchte man für jeden Benutzer ein eigenes Kennwort vorgeben und zudem gleich ein Postfach für Exchange erzeugen, dann kann man dafür über die einzelnen Datensätze der CSV-Datei iterieren:

    Lässt sich die CSV-Datei importieren, dann legt PowerShell die Benutzer in der vorgegebenen Organisations­einheit an. Darüber hinaus trägt das Script die Telefonnummer des Mitarbeiters in das AD ein und bestimmt, dass er das Passwort beim ersten Anmelden ändern muss. Die letzte Anweisung erzeugt dann das Postfach.

    Die Mail-Adresse für die neuen Benutzer folgt den Vorgaben der Adressrichtlinien in Exchange.

    Durch die Richtlinie auf dem Exchange Server erhalten die Benutzer ihre passende E-Mail-Adresse.

    2 Kommentare

    Bild von Dominik Kegler
    Dominik Kegler sagt:
    29. März 2018 - 17:59

    Wäre ganz toll gewesen, wenn....
    Nun, der Schreibfehler im Beispiel im Namen ist ja leicht erkennbar. Doch das Argument "AccountPassword" kennt Microsoft Server 2016 PS nicht... schade

    Bild von Wolfgang Sommergut
    29. März 2018 - 18:30

    Kann ich nicht nachvollziehen. Das Cmdlet New-AdUser unterstützt in PS 5 den Parameter AccountPassword, wie dieser Befehl zeigt:

    (Get-Command -Name New-ADUser).Parameters.AccountPassword