Benutzer im AD skriptgesteuert anlegen

24. Mai 2017

Um auf die „Schnelle“ ein oder zwei Benutzerkonten anzulegen, bemühen die Administratoren gerne die grafische Oberfläche (GUI). Falls nun aber die Zahl der anzulegenden User-Accounts steigt, werden diese Aufgaben in der Regel  automatisiert. Etwa mit einem entsprechenden Skript für die  Powershell (PS). Dazu setzen die Administratoren in der Regel auf das Cmdlet „New-ADUser“. Dem Befehl stehen unterschiedliche Parameter zur Seite, um die erforderlichen Informationen  in den Benutzer-Accounts abzulegen.

 

Zum besseren Verständnis sollten die Systembetreuer den Befehl zunächst einmal nur mit dem Parameter „-Name“ ausführen. Dabei wird zwar bereits ein Konto angelegt, allerdings ist dies für den Einsatz im Produktivbetrieb (noch) zu rudimentär:

New-ADUser -Name Florian.Huttenloher

Der Befehl würde beispielsweise einen Benutzer nur mit dem Account-Namen und dem „Common Name“ anlegen. Allerdings fehlen noch sehr viele Einträge, die einen „vollwertigen“ Benutzer ausmachen:

  • Vor- und Zuname fehlen,
  • Attribute sind nicht spezifiziert,
  • es wurde kein Passwort angegeben und
  • der Benutzer wird als „disabled“ angezeigt – das Konto befindet sich folglich im Zustand „deaktiviert“.

Zudem „landet“ der auf diese Weise angelegte User im Standard-Benutzerordner (Container). Meist möchten die Systembetreuer die Benutzer in den entsprechenden Containern der Organisationseinheit (OU, Organisation Unit) ablegen. Mit den entsprechenden Parametern können die Systembetreuer dies beim Aufruf von „New-ADUser“ erledigen:

New-ADUser -Name Florian.Huttenloher -GivenName Florian -Surname Huttenloher -Path „OU=Testlabor,DC=NT4ADMINS,DC=DE“

Auf diese Weise werden die Felder des Accounts  bereits mit vielen der benötigten Informationen ausgefüllt. Allerdings ist das Passwort auf diese Weise noch nicht gesetzt. Dies erledigen die Systembetreuer mit dem Parameter „-AccountPassword“. Die Voraussetzung für den Einsatz des Parameters: das Passwort muss bereits verschlüsselt (als SecureString) vorliegen. Damit sollten diese Informationen im Vorfeld festgelegt werden, am besten speichern die Administratoren das Kennwort daher in einer Variable:

$password = „Kennwort123“ | ConvertTo-SecureString -AsPlainText -Force
New-ADUser -Name Florian.Huttenloher -GivenName Florian -Surname
Huttenloher -Path „OU=Testlabor,DC=NT4ADMINS,DC=DE“ -AccountPassword $Password -ChangePasswordAtLogon $True -Enabled $True

So ist sichergestellt, dass der Benutzer mit dem Account gleich „loslegen“ kann. Direkt nach der ersten Anmeldung muss zudem noch das Kennwort vom User selbst neu gesetzt werden (-ChangePasswordAtLogon $True -Enabled $True). Dabei werden die jeweiligen Sicherheitsrichtlinien für die Domäne angewandt. Schließlich sind hier in der Regel bestimmte Vorgaben zur Kennwortlänge und Passwortkomplexität vorhanden.

Bild 2. Die Kopie des Azure AD, das man selbst sieht und auch selbst verwalten kann, ist immer nur eine kleine Instanz des viel größeren Ganzen. Quelle: Sean Deuby

 

Skript für die vollautomatische Bereitstellung

Für wenige Benutzer lohnt sich der Aufwand eines solchen Skripts meist nicht, denn zwei, drei Konten lassen sich in der Regel per GUI schneller anlegen, als mit Hilfe dieses Skripts. Interessant wird es dagegen, wenn dutzende oder hunderte von User angelegt werden müssen. Denn das Cmdlet „New-ADUser“ akzeptiert auch Eingaben aus einer vorgefertigten Benutzerliste. Auf diese Weise können Benutzernamen, Anzeigenamen und entsprechende E-Mail-Adressen direkt aus einer Namensliste (etwa im CSV-Format) extrahiert oder erzeugt werden. Das Skript legt dann selbstständig die entsprechenden Benutzerkonten (durch eine „Foreach-Schleife“) an. Dies könnte etwa wie folgt aussehen:

$benutzerliste =Import-CSV „c:\benutzerliste\benutzer.csv“

$OU = „OU=Testlabor,DC=NT4ADMINS,DC=DE“

Foreach ($user in $benutzerliste)

 

{

 

$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

 

}

Mit diesem Skript werden Benutzerinformationen aus einer Datei (c:\Benutzerliste\benutzer.csv) verwendet, und die entsprechenden Domänen-Informationen in der Variable „$OU“ gespeichert. Innerhalb dieser Organisationseinheit werden nun die Benutzerkonten angelegt (New-ADUser), und die benötigten Parameter eingetragen (Vorname, Familienname oder Passwort). In der CSV-Datei müssen die entsprechenden Informationen (durch Semikolon getrennt) vorliegen, etwa nach dem folgenden Muster:

Name;Vorname;Nachname;Passwort;Department

Bilder für die Benutzerkonten hinzufügen

Möchten die  Systembetreuer die Benutzerkonten noch weiter personalisieren, lohnt sich ein Blick auf folgendes Skript von John Savill:

$photoFile = "E:\tempfiles\sav283283.jpg"
$thumbFile = "E:\tempfiles\sav9696.jpg"
$username = "johnsav"
$user = Get-ADUser -LDAPFilter "(sAMAccountName=$username)"
$photo = [byte[]](Get-Content $photoFile -Encoding byte)
$thumbPhoto = [byte[]](Get-Content "$thumbFile" -Encoding byte)
Set-ADUser $user -Replace @{jpegPhoto=$photo}
Set-ADUser $user -Replace @{thumbnailPhoto=$thumbPhoto}

Auf diese Weise fügen die Systembetreuer die jeweiligen User-Bilder und Thumbnails hinzu. In diesem Beispiel werden Bilddateien mit eine Größe von 283 Pixel x 283 Pixel und Thumbnails mit einer Größe von 96 Pixel x 96 Pixel verwendet.

Florian Huttenloher

Lesen Sie auch