Beim Aufsetzen einer SharePoint-Farm ist eine immer wiederkehrende Aufgabe, Domain-Service-Accounts zu erstellen. Die Anzahl der zu erstellenden Domain-Service-Accounts varriiert dabei von
- 3 (Minimum für intiales Deployment) bis zu
- vielen Dutzend (Least Privilege mit etlichen konfigurierten Service Applications).
Die Service-Accounts sind eigentlich recht einfach anzulegen. Aber bei mehr als 3 anzulegenden Service-Accounts, freut sich der AD-Admin als auch der spätere SharePoint-Admin über folgende Eigenschaften der Service-Accounts:
- einheitliche Benamung (Vorname, Nachname, DisplayName, LogonName,…)
- einheitliches Setzen von Account-Eigenschaften (Password never expires, User is not allowed to change password,…)
Soweit so gut, aber gibt es denn sowas nicht schon? – Nach 2 Minuten Googeln bin ich auf eine Reihe von Lösungen gestoßen, wie man mit Hilfe einer CSV-Datei eine Art Bulk-AD-User-Insert umsetzen kann:
- CSVDE.exe – Kommandozeilen-Tool, welches aber keine Startpasswörter vergeben kann.
- PowerShell-Cmdlets – Mittels Standard-Cmdlets Import-CSV und New-ADUser kann das gewünschte Verhalten mit einem Einzeiler umgesetzt werden.
- PowerShell-Cmdlets von Quest - ActiveRoles Management Shell for Active Directory – Gut dokumentierte Zusatz-Cmdlets (35 MB), die aber installiert werden müssen.
- AD-Toolset - Active Directory User Import, AD Bulk Users – Lizenzpflichtiges Toolset (teils GUI, teils Kommandozeile), mit dem ein AD Bulk Import durchgeführt werden kann.
Als PowerShell-Verfechter sind für mich nur die beiden PowerShell-Cmdlet-Lösungen von Interesse. Da ich oft keinen Einfluss auf installierte Software auf dem AD-Server habe, scheidet auch die Quest-Lösung für mich aus. Bleibt also nur noch die Einzeiler-Lösung aus Technet. – Leider fand ich diese etwas kryptisch und die Konsolen-Ausgabe eines Bulk-Imports wollte ich auch ein wenig beeinflussen. Deshalb habe ich den Einzeiler um 124 Zeilen erweitert. Das Vorgehen wäre dann das Folgende:
- CSV-Datei erstellen
- AD-Zielordner wählen (bspw. eine OU)
- PowerShell-Skript ausführen (Bulk-AD-User-Import-From-CSV-File)
- Parameter 1: InputFile (das ist der Pfad zur CSV-Datei)
- Parameter 2: AdDN (das ist der sogenannte Distinguished-Name)
- Beispielaufruf: ./Bulk-AD-User-Import-From-CSV-File.ps1 “my-CSV-Input.csv” “OU=ServiceAccountsOU,dc=testad,dc=de”
- Änderungen im AD prüfen
- Wichtig: Passwörter der angelegten Nutzer ändern (weil das Setzen der Passwörter nicht ordnungsgemäß vom Skript erfüllt wird.
Bebildert sieht es dann so aus:
Das PowerShell-Skript berücksichtigt in Symbiose mit der CSV-Datei als Datenquelle natürlich bei weitem (noch) nicht alle theoretisch möglichen Eigenschaften eines AD-Accounts. Jedoch genügt es an dieser Stelle als solide Grundlage, um die Vorbereitung einer SharePoint-Installationen zu automatisieren und Zeit zum Kaffeetrinken zu gewinnen.
Über die Google-Recherche bin ich übrigens noch auf zwei weitere interessante Blog-Beiträge gestoßen:
- PowerShell Tutorial 12 – Part 1: Active Directory Management – Sehr schöner Einstieg in das Thema AD-Administration mit PowerShell mit vielen Screenshots. Außerdem werden die typischen Fallstricke (kryptische interne Namen von Eigenschaften) aufgezeigt.
- Automating Active Directory account creation with Powershell – Hier wird die Nutzung von PowerShell zur Automatisierung von AD-Accounts und Exchange-Email-Postfächern demonstriert.
Das Setzen des Passwortes funktioniert nicht korrekt. Bevor ich das Skript anpasse, wäre der Workaround vorerst, das Passwort manuell im AD zu setzen (wäre eh zu empfehlen, um das Passwort nicht im Klartext in einer CSV zu speichern).
Wictor Wilén hat noch eine nette Idee beschrieben, wie man mit Hilfe eines “Name Generator”-Services eine große Anzahl von AD-Nutzern erstellen kann.