• Active Directory
    • AD Consulting
    • AD Design
      • Domain Name festlegen
      • Domain Struktur einrichten
      • Forest Struktur definieren
    • AD Management
    • AD Automation
      • Dynamic Access Control (DAC)
    • AD Federation Services
      • ADFS Betrieb
      • ADFS und Office365
      • ADFS und Cisco Unified Communications Manager
      • SAML und ADFS 2.0
  • Azure / M365
    • Azure AD
    • Microsoft 365 (O365)
  • Migration
    • Active Directory Migration
    • Exchange Migration
    • File Server Migration
    • Lotus Notes Migration
    • Novell Migration
  • Wissen
    • Alle Beiträge
    • Administration
    • PowerShell
    • Migration
    • Exchange
    • Tools
  • Kontakt
    • Wir über uns
    • Kontakt
  • EN
info@firstattribute.com
by FirstAttribute
Active Directory FAQActive Directory FAQ
  • Active Directory
    • AD Consulting
    • AD Design
      • Domain Name festlegen
      • Domain Struktur einrichten
      • Forest Struktur definieren
    • AD Management
    • AD Automation
      • Dynamic Access Control (DAC)
    • AD Federation Services
      • ADFS Betrieb
      • ADFS und Office365
      • ADFS und Cisco Unified Communications Manager
      • SAML und ADFS 2.0
  • Azure / M365
    • Azure AD
    • Microsoft 365 (O365)
  • Migration
    • Active Directory Migration
    • Exchange Migration
    • File Server Migration
    • Lotus Notes Migration
    • Novell Migration
  • Wissen
    • Alle Beiträge
    • Administration
    • PowerShell
    • Migration
    • Exchange
    • Tools
  • Kontakt
    • Wir über uns
    • Kontakt
  • EN

AD PowerShell Basics 1: New-ADUser

Feb 12, 2021 (Letztes Update) | Posted by Robin Immecke KnowHow, PowerShell |

 

AD PowerShell Basics 1: New-ADUser

In dieser kleinen Reihe möchte ich die gebräuchlichsten Active Directory Powershell cmdlets vorstellen.

Mit dem cmdlet New-ADUser werden:
– Neue Benutzer erstellt,
– Passwörter hinzugefügt oder
– Benutzer per Massen-Import mittels CSV-Datei erzeugt.
 


AD PowerShell Basics

Ich möchte Euch in dieser Serie zeigen, wie mit geringem Aufwand und wenig Quellcode eine große Menge Infos aus dem AD ausgelesen oder Daten ins AD geschrieben werden. Folgende Cmdlets werden vorgestellt:

New-ADUser 
Get-ADUser
Set-ADUser
New-ADGroup, Get-ADGroup, Set-ADGroup

Das Cmdlet New-ADUser

Inhaltsverzeichnis

  • 1 Das Cmdlet New-ADUser
    • 1.1 Ergänzung von Vor- und Nachname sowie Ziel-OU
    • 1.2 Kennwort hinzufügen
    • 1.3 Kennwort beim ersten Login ändern
    • 1.4 Anwender führen PowerShell aus
  • 2 Massen-Import von Benutzern per New-ADUser

In diesem ersten Teil geht es um das cmdlet New-ADUser gehen. Mithilfe dieses cmdlets können Sie neue Benutzer im Active Directory anlegen. Zwingend wird für diesen Befehl nur der sAMAccountName des anzulegenden Benutzers. Das sieht dann in etwa so aus:

New-ADUser -Name Thomas.Mueller

Wird diese Zeile in einer Powershell ausgeführt, wird ein Benutzer mit dem sAMAccountname und dem cn (common name) „Thomas.Mueller“ angelegt.
Die Voraussetzung dafür ist, dass die AD Tools installiert wurden.

Das ist allerdings auch das Einzige, was dieser Account an Informationen besitzt:

  • Es gibt keinen Vor- und Nachnamen,
  • keine gefüllten Attribute
  • es wird kein Passwort vergeben
  • der Benutzer wird als „disabled“ angelegt.

Außerdem landet der Benutzer im „Standard“ Users Container. Dort wollen Sie ihn im Normalfall aber nicht liegen lassen. 

Ergänzung von Vor- und Nachname sowie Ziel-OU

Es ist daher sinnvoll unsere Zeile um ein paar Infos zu ergänzen. Diese sind nicht zwingend nötig, aber für das arbeiten mit dem Active Directory eigentlich unerlässlich. Fügen Sie zum Beispiel folgende Parameter hinzu:

New-ADUser -Name Thomas.Mueller -GivenName Thomas -Surname Mueller -Path „OU=Testuser,DC=Company,DC=Com“

Mit dieser Zeile haben Sie den Vor- und Nachnamen sowie die OU des Benutzers festgelegt. Fast alle anderen Attribute, die Sie einem User geben können, werden auf diese Weise befüllt. 

Kennwort hinzufügen

Etwas komplizierter wird es, wenn Sie bei der Benutzeranlage ein Passwort mitgeben möchte.
Die Vergabe eines Passwortes beim Anlegen hat mehrere Vorteile:

  1. Sie müssen nicht jeden neu angelegten Account nochmal anfassen und ihm ein neues Passwort geben
  2. Legen Sie auf diese Weise direkt „enabled“ Accounts an.

Da letztendlich ja nur der Benutzer selbst das Passwort kennen soll, wird gleich noch festgelegt, dass er es bei seinem ersten Login ändern soll. 

Kennwort beim ersten Login ändern

Leider können Sie bei New-ADUser nicht einfach den Parameter -AccountPassword mit dem Wert „Start12345“ in die Zeile eintragen. Der hier anzugebende Wert muss bereits als Secure String vorhanden.
Aus diesem Grund erzeugen Sie zunächst eine Variable mit dem „Passwort-Wert“ und wandeln den Inhalt in einen Secure String um:

$password = „Start12345“ | ConvertTo-SecureString -AsPlainText -Force
New-ADUser -Name Thomas.Mueller -GivenName Thomas -Surname Mueller -Path „OU=Testuser,DC=Company,DC=Com“ -AccountPassword $Password -ChangePasswordAtLogon $True -Enabled $True

Nun haben Sie einen Account, der vom Benutzer direkt verwendet werden kann.
Dabei ist sichergestellt, dass er das Kennwort beim ersten Login neu vergeben muss.

Im Hintergrund

Anwender führen PowerShell aus

Wenn Skripte zur Vereinfachung erstellt wurden, müssen sie noch im richtigen Moment ausgeführt werden. Dies können Anwender übernehmen, da die Skripte oft benutzer- oder gruppenspezifische Tasks beinhalten. Das IDM-Portal bietet diese Funktionen und loggt diese zur Nachvollziehbarkeit mit.

Massen-Import von Benutzern per New-ADUser

So weit so gut. Vergleicht man dies mit der „Klick-Benutzeranlage“ aus Users and Computers, wäre es wohl einfacher einen Benutzer per Hand anzulegen. Wirklich interessant wird die PowerShell und New-ADUser, wenn mehrere Hunderte Benutzerkonten angelegt werden sollen. Dafür wird nur eine Inputdatei mit allen Infos benötigt.

Am besten nehmen Sie dazu eine durch Semikolon getrennte CSV Datei.
Erstellen Sie eine Excel-Tabelle mit Spalten für Name, Vorname, Nachname und so weiter.
Speichern Sie diese dann im CSV-Format.
Dies könnte dann ungefähr so aussehen:

New-ADUser-Massenimport-mit-CSV

Ich habe an dieser Stelle noch den Bereich in dem die Mitarbeiter arbeiten dazu genommen. Außerdem habe ich die OU hier rausgelassen, da alle in derselben OU landen.

Natürlich können Sie diese hier auch hinzufügen, wenn Sie z.B. eine eigene OU für die Geschäftsleitung haben. Bauen Sie nun Ihre beiden kleinen Zeilen etwas um und ergänzen Sie:

$Import =Import-CSV „c:\Test\import.csv“
$OU = „OU=Testuser,DC=Company,DC=Com“

Foreach ($user in $Import)

{

$password = $user.password | ConvertTo-SecureString -AsPlainText -Force
New-ADUser -Name $user.name -GivenName $user.Vorname -Surname $user.nachname -Path $OU -AccountPassword $Password -ChangePasswordAtLogon $True -Enabled $True

}

Was macht das Skript:

  1. Zuerst importiert das Skript die CSV Datei.
  2. Danach ruft es jeden Datensatz auf, schreibt das Passwort und erzeugt das Benutzerkonto

Nun haben wir eine „Foreach“-Schleife, die jeden Benutzer durchgeht und mit den in der CSV Datei hinterlegten Parametern anlegt.

Fazit:
Dies ist eine praktische Vereinfachung, wenn ich auf einen Schlag sehr viele Benutzer oder auch regelmäßig eine größere Anzahl von Benutzern anlegen möchte.

Artikel weiterempfehlen:
  • teilen
  • tweeten
  • sharen
  • xingen
  • mailen
Artikel erstellt am: 30.04.2015
Tags: Benutzer anlegenNew-ADUserPowerShell
3

You also might be interested in

E-Mail-Adresse mit PowerShell prüfen

E-Mail-Adresse mit PowerShell prüfen

Aug 27, 2019

Möchten Sie einen neuen Nutzer angelegen? Dann sollten Sie prüfen,[...]

LastLogon vs. LastLogonTimestamp

LastLogon vs. LastLogonTimestamp

Jan 20, 2021

Möchten Sie von einem Active Directory-Benutzer den Zeitpunkt der letzten[...]

Seltene AD Attribute setzen mit PowerShell

Seltene AD Attribute mit PowerShell setzen

Nov 20, 2018

Mit diesem Beitrag möchte ich ein bereits auf Active-Directory-Faq.de erschienenes[...]

19 Comments

Leave your reply.
  • Johann
    · Antworten

    29. Oktober 2020 at 10:34 PM

    Nachtrag 2: Diesen einen Fehler konnte ich beheben, aber jetzt kommt eine neue Fehlermeldung:
    ConvertTo-SecureString : Es wurde kein Parameter gefunden, der dem Parameternamen „Name“ entspricht.
    In Zeile:9 Zeichen:84
    + … | ConvertTo-SecureString -AsPlainText -Force New-ADUser -Name $user.n …
    + ~~~~~
    + CategoryInfo : InvalidArgument: (:) [ConvertTo-SecureString], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.ConvertToSecureStringCommand

    Die Zelle A1 in der CSV heißt aber „Name“, importiert dürfte sie auch werden, da kein Importfehler angezeigt wird. Können sie mir da bitte als absoluter PowerShell-Newbie unter die Arme greifen? Danke!

  • Jo
    · Antworten

    27. Oktober 2020 at 10:40 PM

    Nachtrag – unsere csv:
    Name;Password
    P01;asdf1234
    P02;asdf1234
    P03;asdf1234
    P04;asdf1234
    P05;asdf1234
    P06;asdf1234
    P07;asdf1234
    P08;asdf1234
    P09;asdf1234
    P10;asdf1234
    P11;asdf1234
    P12;asdf1234
    P13;asdf1234
    .
    .
    .
    P50;asdf1234

  • Johann
    · Antworten

    27. Oktober 2020 at 6:30 PM

    Hi,
    Danke für die Anleitung, bei mir funktioniert sie leider nicht, da der Befehl „New-ADUser“ unbekannt ist. Ich habe mit mit „get-command“ die vorhandenen cmd angesehen und da gibt es dieses nicht. System Win10 Education
    Script (wir brauchen für die Schüler nur Name und Passwort) und Fehlermeldung:

    $Import =Import-CSV “c:\import.csv” -Delimiter „;“

    Foreach ($user in $Import)

    {

    $password = $user.password | ConvertTo-SecureString -AsPlainText -Force
    New-ADUser -Name $user.name -AccountPassword $Password -ChangePasswordAtLogon $True -Enabled $True

    }

    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:9 Zeichen:1
    + New-ADUser -Name $user.name -AccountPassword $Password -ChangePasswor …
    + ~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (New-ADUser:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

  • Dennis
    · Antworten

    21. Februar 2019 at 4:45 PM

    Hi,

    vielen Dank für dieses nette Tutorial und die Erläuterung. Mir stellt sich eine andere Frage.
    In diesem Artikel gehen wir davon aus, dass die Quelle der AD Benutzer / Mitarbeiter eine selbstgeschriebene .csv Datei ist.

    Was, wenn ich auf einen Schlag 40 – 80 Mitarbeiter anlegen möchte? Oder anders:

    ICH möchte aus einer AD Benutzer ziehen um sie in einer anderen AD wieder anzulegen. (Bitte fragt nicht..)

    Ich bin nun soweit, dass ich mir via

    Get-ADGroupMember SG_Presales | Get-ADUser |Select-Object GivenName,Surname,SamAccountName| Expo
    rt-CSV C:\tmp\test.csv -Encoding UTF8 -delimiter „;“ -NoTypeInformation

    Die Benutzer aus der Gruppe SG_Presales sortiert in eine CSV exportiere.

    Leider erhalte ich beim Import mit:

    $Import=Import-CSV „c:\tmp\test.csv“ -delimiter „;“
    $OU = „OU=XXX,OU=User,OU=Benutzer,OU=Präsentatoren,DC=XXX,DC=XXX“
    $username =
    Foreach ($user in $Import)
    {$password = ‚XXXXX$‘ | ConvertTo-SecureString -AsPlainText -Force
    New-ADUser -Name $user.Name -GivenName $user.Vorname -Surname $user.Nachname -Path $OU -AccountPassword $Password -ChangePasswordAtLogon $True -Enabled $True
    }

    Die Meldung, dass der Server diesen Vorgang nicht durchführen kann.

    Und da stehe ich nun. 🙂 In der Zeit hätte ich die auch manuell anlegen können, aber wer weiß vielleicht macht sich eine funktionierende Lösung ja in Zukunft bezahlt.

    Vielleicht haben Sie einen Tipp.

    LG

    Dennis

    Die Benutzer aus

    • Steve König
      · Antworten

      26. Februar 2019 at 6:12 PM

      Hi Dennis,

      der Fehler liegt schon im Export deiner Daten. Von den ausgelesenen Nutzer-Objekten selektierst du drei Eigenschaften mit „Select-Object GivenName,Surname,SamAccountName“ und schreibst diese in die CSV. In deinem „New-ADUser“ cmdlet greifst du dann aber auf eine nicht vorhandene Eigenschaft zu: „New-ADUser -Name $user.Name“ – das ist allerdings eine Pflichtangabe bei New-ADUser, da dies der Name (cn und samAccountName) des neuen Nutzers werden soll. Sofern du die Spalten nicht anders benannt hast, hast du aber auch mit $user.Vorname und $user.Nachname ein Problem, denn in deinem Export heißen die GivenName und Surname. Auch da wird das cmdlet meines Wissens nach fehlschlagen, wenn du leere Werte übergibst. Zugegeben, die Fehlermeldung ist tatsächlich wenig aussagekräftig – Powershell schickt das Kommando an den Server einfach ungeprüft ab und der sagt dann „Ne, damit kann ich nichts anfangen, Abbruch.“ Aber von Powershell erwarten wir generell keine guten Fehlermeldungen 🙂

      Ich hoffe, das hilft dir weiter!

  • Müller
    · Antworten

    30. November 2016 at 12:36 PM

    Hi, klasse Anleitung!

    Ist es denn jetzt noch möglich, das Script so zu erweitern, damit Beschreibung, Benutzeranmeldename, E-Mail, etc. ebenfalls eingelesen werden? Wenn ja, welche Befehle benötige ich?

    Danke im Voraus.

    • Steve König
      · Antworten

      9. Januar 2017 at 12:27 PM

      Hallo,

      natürlich, grundsätzlich können Sie alle Attribute verwenden, die das New-ADUser CmdLet anbietet. Am Beispiel der „Beschreibung“ würde das so funktionieren:
      1. Fügen Sie eine neue Spalte „Beschreibung“ in der CSV-Datei hinzu
      2. Fügen Sie entsprechende Werte in den Zeilen als Beschreibung für die gewünschten Nutzer hinzu
      3. Im Skript greifen Sie auf die „Beschreibung“-Spalte des jeweiligen Nutzers zu und fügen diese im New-ADUser CmdLet beim gewünschten Attribut ein – in diesem Beispiel „Description“. Das würde ungefähr so aussehen (der Übersicht wegen gekürzt): „New-ADUser -Name $user.name …. -Description $user.Beschreibung“

      Welche Attribute von New-ADUser unterstützt werden, finden Sie im entsprechenden TechNet-Beitrag hier:
      https://technet.microsoft.com/en-us/library/ee617253.aspx
      Die E-Mail-Adresse zum Beispiel ist „EmailAddress“ und der Login-Name wäre „SamAccountName“

  • Nick
    · Antworten

    11. November 2016 at 11:06 AM

    Hallo ich hab mir ihren Artikel mal durch gelesen und habe das Problem, das jeder Befehl eine Fehlermeldung anzeigt und als kompletter PS Anfänger habe ich keine Ahnung was ich da machen kann.
    Fehlermeldungen : http://prntscr.com/d5uv6l
    User.csv : http://prntscr.com/d5uvtf

    • Steve König
      · Antworten

      14. November 2016 at 10:22 AM

      Hi Nick,
      das Problem ist, dass das Import-CSV CmdLet die CSV nicht findet. Das steht auch gleich in der ersten Fehlermeldung: „Import-CSV: Die Datei „C:UsersAdministratoruser.csv“ konnte nicht gefunden werden.“

      Die restlichen Fehler kannst du erstmal ignorieren, die stammen alle daher, dass er die Datei nicht laden konnte und deswegen deine $Import-Variable leer ist. Das Skript wird weiter ausgeführt, aber die Befehle schlagen deswegen alle fehl.

      Stelle also bitte sicher, dass die Datei auch unter dem angegebenen Pfad liegt, richtig heißt und dass du Zugriff mit der Powershell darauf hast.

      Viele Grüße,
      Steve.

      • Nick
        · Antworten

        16. November 2016 at 11:25 AM

        Hab jetzt den Pfad berichtigt, aber jetzt kommen immer noch einige Fehler.
        http://prntscr.com/d7wtkm
        MfG
        Nick

        • Steve König
          · Antworten

          18. November 2016 at 10:38 AM

          Hi Nick,

          ändere doch bitte mal die erste Zeile folgendermaßen (mit dem für dich richtigen Pfad natürlich):

          $Import =Import-CSV „C:\Test\import.csv“ -Delimiter ";"

          Funktioniert es jetzt?

          Viele Grüße,
          Steve.

  • cat tax
    · Antworten

    21. Oktober 2016 at 2:24 PM

    Hallo,

    ja, es lag an der Sprachversion von Powershell. Die CSV-Datei habe ich nicht mit Excel, sondern habe per Hand eine import.txt Textdatei befüllt, die ich dann in import.csv umbenannt habe. Ich war bisher das Semikolon in CSV-Dateien gewöhnt und habe gar nicht daran gedacht, dass die englische Powershell das Komma erwartet.

    Guter Hinweis, Danke. Wieder etwas gelernt; wenn auch nur Grundlagen-Ursuppe. 🙂

    Grüße

    • Steve König
      · Antworten

      21. Oktober 2016 at 4:24 PM

      Gern geschehen. Wir mussten die Grundlagen schließlich auch mal alle lernen – manchmal auch auf die harte Tour, wenn man zum Beispiel stundenlang nach dem Grund sucht, warum man diese Datei einfach nicht einlesen kann 😉

  • cat tax
    · Antworten

    20. Oktober 2016 at 8:59 AM

    Hallo,

    danke für den Artikel. Sehr hilfreich für mich als PS-Novize 🙂

    Das längere Skript funktioniert nur nicht. PS sagt mir zu jedem Variablen-Import, dass der Wert NULL sei.

    Erst als ich die erste Zeile in folgendes umgewandelt habe, hat er die Werte bekommen und dementsprechend die Nutzer angelegt:

    $Import = Import-CSV „c:\test\import.csv“ -Delimiter „;“

    Meine PS-Version ist 4.0

    • Steve König
      · Antworten

      20. Oktober 2016 at 4:35 PM

      Hallo cat tax,
      das kommt ganz darauf an, welche Sprachen- und Regionseinstellungen die Betriebssysteme und Programme verwenden, die mit der CSV arbeiten.

      Im Standard EN-US ist das Trennzeichen – der Delimiter – ein Komma (,). Deswegen auch der Name CSV – Comma Separated Value. Für die DE-DE Einstellung allerdings ist das Standard-Trennzeichen das Semikolon (;). Ein deutsches Excel auf einem deutschen Windows würde also eine CSV, die mit einem Komma getrennt ist, nicht richtig anzeigen.

      Genauso kann eine englische Powershell (wie Sie verwenden, wie ich vermute), die CSV nicht einlesen, wenn sie mit Semikolons getrennt ist – es sei denn, Sie geben das Trennzeichen explizit an, wie Sie es ja auch gemacht haben 😉

Leave a Reply

<p>Danke für Ihre Anregungen, Fragen und Hinweise.<br/>Infos zum <a href="https://www.active-directory-faq.dekontakt/">Datenschutz</a></p>
Cancel Reply

FirstWare IDM-Portal im Test: IT-Administrator 08-2022

 

ADFAQ-FirstAttribute

Wer schreibt ?

Team der FirstAttribute AG

Consultants und Entwickler der FirstAttribute arbeiten seit mehr als 20 Jahren in IAM- und Cloud-Transition-Projekten.
Zusammen verfügen Sie über einen wertvollen Erfahrungsschatz im Bereich Active Directory und Azure AD und teilen diesen auf Active Directory FAQ.

Neueste Artikel

  • 8 Tipps für mehr Sicherheit in Active Directory und Backups von AD
  • Azure AD Custom Security Attributes ermöglichen flexible Berechtigungsstrukturen
  • Dateiberechtigungen in MS Teams und SharePoint Online verwalten – So funktioniert es
  • AD-Gruppen in Microsoft Teams verwenden – Dynamische Gruppen in der Praxis
  • Verbindung zwischen Microsoft 365 und SharePoint Online zu Azure AD

Unsere IAM-Lösungen

Ihre IAM-Lösung: FirstWare IDM-Portal

 

my-IAM für Cloud Identity Management in Microsoft Teams

Kontakt aufnehmen

Sie haben eine Frage oder Anmerkung? Schicken Sie uns schnell eine Nachricht.

Nachricht senden
Jetzt AD Tasks vereinfachen und delegieren: FirstWare IDM-Portal

Folgen Sie uns

Kontakt

  • FirstAttribute AG
  • Am Büchele 18, 86928 Hofstetten, Germany
  • +49 89 215 442 400
  • https://www.firstattribute.com

Schlagwörter

.Net ACL Active Directory AD LDS AD Objekt Azure AD Berechtigung Cloud cmdlets Delegation Domain Controller dynamicgroup dynamische Gruppen Exchange Exchange-Ordner Exchange-Postfach Exchange Migration Federation FirstWare Get-Mailbox Global Catalog Group Policy Gruppen Gruppenmitgliedschaft IDM-Portal LDAP m365 Microsoft Azure Migration New-ADUser Novell NTFS Office 365 PowerShell QMM QMM AD QMM Exchange Quest Migration Manager Schema Set-ADUser SID SID History Update Windows 10 Windows Server 2012 R2

Neueste Kommentare

  • activedirectoryfaq.com sharepoint login - infoslist bei Windows 365 und Azure AD verstehen in Theorie und Praxis
  • Domäne Letzte Anmeldung - ObenGesichert.com bei LastLogon vs. LastLogonTimestamp
  • Teams Code Zur Anmeldung - ObenGesichert.com bei Authentifizierung für MS Teams in hybriden Netzwerken
Login
Impressum
Datenschutzerklärung

© 2023 · Active-Directory-FAQ by firstattribute.com

Prev Next