Jeden Sommer lösche ich automatisiert die Accounts der Schüler/-innen, die nicht mehr bei uns zur Schule gehen und erstelle danach die neuen Accounts. Die Accounts werden aus dem ersten Buchstaben des Vornamens und dem Nachnamen gebildet, also im Stil von v.nachname. Wenn der Account bereits existiert, kann man so den zweiten Buchstaben des Vornamens verwenden, also vo.nachname und so weiter. Trotzdem können noch Probleme auftreten. So haben wir z.B. drei Schüler mit dem gleichen Namen und weitere Fälle mit doppelten Namen. Auch wenn die Lehrpersonen untereinander abmachen, welcher Schüler welchen Accountnamen besitzt, habe ich dann beim automatischen Abgleich auch schon den falschen Account gelöscht.
Seit wir Lehreroffice zusammen mit VRSG benutzen, haben wir in unseren Daten einen eindeutigen Schlüssel, der in VRSG produziert wird und dann in Lehreroffice übernommen wird.
Dieser Schlüssel kann nun gebraucht werden, um die Accountdaten eindeutig einem Schüler zuzuweisen.
Bei der Erstellung der neuen Accounts in diesem Sommer habe ich diesen Schlüssel als “Beschreibung” ins Active Directory importiert.
Damit ich beispielsweise beim Löschen der Accounts der ausgetretenen Schüler/-innen diese ID statt der Namen vergleichen kann, müsste ich aber warten, bis alle Schüler/-innen, deren Account vor diesem Sommer erstellt wurden, aus der Schule ausgetreten sind, was doch einige Jahre warten bedeuten würde…
Manuell die ID bei all diesen Schüler/-innen nachzutragen, bedeutet wahrscheinlich mehrere Tage Arbeit und ist dann auch noch fehleranfällig. Powershell bietet mit Set-ADUser eine Möglichkeit, die Benutzeraccounts nachträglich automatisiert zu bearbeiten. Man benötigt also eine passende CSV-Datei mit den Lehrerofficeschlüsseln und ein Skript.
CSV-Datei
Die CSV-Datei benötigt einen passenden Wert wie den ganzen Namen und den neuen Eintrag für die Beschreibung. Damit die Namen übereinstimmen, müssen sie auf dem gleichen Weg erstellt werden, wie ich das jeweils für die neuen Accounts mache. Dazu kopiert man von jeder Schulgemeinde in Lehreroffice alle Schüler (oder eine Gruppe) in eine Exceltabelle und löscht in diesem Fall alle Spalten ausser Vorname, Nachname und Schlüssel.
Damit die Namen brauchbar sind, muss man einiges ersetzen. Bisher sind mir folgende Zeichen untergekommen: ä,ö,ü,é,è,ë,á,ó,Û,ú,ò,ô,ï. Ausserdem ersetze ich alle Leerschläge, Bindestriche – und Apostrophe ‚. Dies kann man in Excel mit “Suchen und Ersetzen” erreichen oder mit einer verschachtelten “wechseln” Funktion. Da man in Excel nicht beliebig viele Funktionen verschachteln kann, habe ich die Funktion auf drei Schritte aufgeteilt:
=WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(Tabelle1!A1;“ „;““);“-„;““);“‚“;““);“ä“;“ae“);“ö“;“oe“);“ü“;“ue“);“é“;“e“);“è“;“e“)
=WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(A1;“ë“;“e“);“à“;“a“);“ó“;“o“);“Û“;“U“);“ú“;“u“);“ò“;“o“);“ô“;“o“);“ï“;“i“)
=WECHSELN(WECHSELN(WECHSELN(B1;“Ä“;“Ae“);“Ö“;“Oe“);“Ü“;“Ue“)
Danach erhält man bereinigte Vor- und Nachnamen. Praktisch wäre es, wenn Lehreroffice bei den Personaldaten zwei Spalten mit den um Sonderzeichen bereinigten Vor- und Nachnamen bereitstellen würde. So etwas würde von zu wenigen gewünscht, war die Antwort auf eine Anfrage, die schon länger zurückliegt.
In einer neuen Tabelle kann man nun die bereinigten Vor- und Nachnamen und den Schlüssel bereitstellen. Um den Vor- und Nachnamen in eine Zelle zu bekommen, kann man diese Formel benutzen (Blattname und Zellename anpassen):
=Tabelle2!C1&“ „&Tabelle2!F1
Nun kann man die Datei als CSV speichern. Excel exportiert standardmässig mit Strichpunkt als Trennzeichen, Powershell mit Komma. Daher ersetze ich im CSV jeweils noch alle ; mit ,.
Skript
Um nun dem Schülernamen den passenden Schlüssel hinzuzufügen kann man folgendes Powershellskript verwenden:
Import-CSV „C:\PS\leoid.csv“ | ForEach-Object {
Get-ADUser -Filter „name -eq ‚$($_.name)'“ |
Set-ADUser -Description $_.LeoID
}