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
Index
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:
- Sie müssen nicht jeden neu angelegten Account nochmal anfassen und ihm ein neues Passwort geben
- 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.
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:
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:
- Zuerst importiert das Skript die CSV Datei.
- 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.
19 Comments
Leave your reply.