Tags: Active Directory, PowerShell, E-Mail
Muss man mehrere Benutzer im Active Directory anlegen, dann ist PowerShell unter den Bordmitteln das Tool der Wahl. Zumeist importiert man dabei die Daten aus einer CSV-Datei, bevor man sie an das Cmdlet New-ADUser übergibt. Bei dieser Gelegenheit kann man auch die Mailbox für Exchange einrichten.
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 übereinstimmen. 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 Benutzeranlage 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).
Wenn diese nicht mit einem Komma formatiert ist, dann muss man bei Import-Csv das Trennzeichen über den Parameter Delimiter spezifizieren. Sind alle Voraussetzungen 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 Kommandozeile ü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 Organisationseinheit 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.
Durch die Richtlinie auf dem Exchange Server erhalten die Benutzer ihre passende E-Mail-Adresse.
Täglich Know-how für IT-Pros mit unserem Newsletter
Roland Eich ist gelernter Fachinformatiker für Systemintegration und in der IT seit über 14 Jahren zu Hause. Roland deckt aufgrund seiner Erfahrungen ein breites Spektrum der Microsoft-Produktpalette ab.Zudem besitzt er verschiedene Zertifizierungen (MCITP, MCSA und MCSE, ITIL, PRINCE2).
// Kontakt: E-Mail //
Verwandte Beiträge
- Verteilergruppen für Exchange in PowerShell anlegen und verwalten
- Kontakte für Microsoft Exchange anlegen im Admin Center oder mit PowerShell
- Security- und Health-Checks für Active Directory mit PowerShell-Scripts
- Split-brain DNS in Active Directory einrichten
- AD-Konten mit DES- und RC4-Algorithmus für Kerberos-Verschlüsselung finden
Weitere Links
8 Kommentare
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
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
Hallo.
Ich habe ein minus vor den Parameter AccountPassword gesetzt.
Also -AccountPassword, dann ist es durchgelaufen.
Gruß
Ja, der Bindestrich hat bei einem Beispiel gefehlt. Habe ihn nun ergänzt. Danke für den Hinweis!
Ich ersuche um Hilfe! Mein PowerShell (Win10) kennt das cmd New-ADUser nicht:
New-AdUser : Die Benennung "New-AdUser" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder
eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern
enthalten), und wiederholen Sie den Vorgang.
In Zeile:4 Zeichen:3
+ { New-AdUser -Name $username$i -Enabled $True -ChangePasswordAtLogon ...
+ ~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (New-AdUser:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Danke im Voraus!
Hallo Johann,
ich kann mir schwer vorstellen, dass Ihr Windows10 das per default kann.
Haben Sie denn vorher die RSAT Tools installiert oder das Active Directory Modul geladen ansonsten kennt Windows 10 die CMDlets doch gar nicht.
Beste Grüße
Roland Eich
das funktioniert soweit alles wunderbar, solange der User Max Muster heißt. Sobald er aber Max Müller heißt wirds schwierig, weil im AD dann nicht Müller steht, sondern Max Müller
Hallo Markus,
vielen Dank für Ihren Beitrag.
Sie müssten beim Importvorgang bereits merken, wenn Sie $Import auslesen, dass die Umlaute nicht mitgekommen sind. Dies hat ansich nicht mit meinem Vorgehen oder dem Beispiel zu tun, es geht viel mehr darum, dass der Import etwas anders angegangen werden muss.
Wenn Sie am Ende des Strings ein -Encoding UTF8 machen und dann nochmal das Array $Import prüfen, sollten die Umlaute auch mit enthalten sein.
Sollte es so immer noch nicht klappen, schreiben Sie mich gerne direkt an, dann schaue ich mir das sehr gerne an.
BTW: Aus der Erfahrung heraus ein keiner Tipp, den UPN und ggf. auch den Samaccountname würde ich immer ohne Umlaute machen also Ü = ue etc. so haben die Benutzer es nachher etwas leichter bei der Anmeldung.
herzliche Grüße
Roland Eich