In diesen Tagen ist José, mein Tool zur automatisierten Dokumentation von Active Directory, zum einhunderttausendsten Mal heruntergeladen worden. Gleichzeitig ist das Werkzeug zehn Jahre alt geworden, denn im Frühjahr 2002 habe ich die erste Entwurfsskizze dafür notiert. Zeit also, José zu gratulieren und euch allen zu danken für eure Treue, euer Feedback und eure Beteiligung an der Weiterentwicklung! Zeit auch für einen Rückblick auf die Entstehung des Werkzeugs.
Hier zunächst der Download der aktuellen Fassung:
José Active-Directory-Dokumentation (86,1 KiB, 201.568-mal heruntergeladen, letzte Änderung am 9. April 2019)
Die Idee
Bereits seit der frühen Betaphase von Windows 2000 war ich mit Active Directory vertraut. Schon damals fand ich, dass vieles an diesem großartigen Verzeichnisdienst noch nicht übersichtlich genug ist. In einem größeren Migrationsprojekt 2002 ergab sich dann die Notwendigkeit, den jeweils erreichten Objektstand des Active Directory in grafischer Form zu dokumentieren. Bordmittel gab es dazu nicht (gibt es immer noch nicht), und der Drittanbietermarkt gab seinerzeit noch nichts Brauchbares her (dort findet sich auch jetzt noch sehr wenig für diese Sorte Dokumentation). Was es seinerzeit gab, war ein Visio-Plugin, das das AD auslesen und als Visio-Grafik darstellen konnte. Die Ergebnisse dieses Werkzeugs waren aber wenig überzeugend und erforderten ein großes Maß an manueller Nacharbeit.
Also fing ich an, eine Idee umzusetzen, die ich bereits 1999 gehabt hatte: Warum nicht die Objekte des AD der Containerstruktur nach von oben nach unten auslesen und als Dokument ausgeben? Um von Seitenformaten und Applikationen unabhängig zu sein, bot es sich an, die Ausgabe als HTML zu generieren.
Archäologie: Die ersten Spuren
Hier ein Bild der ersten Notizen zu dem Tool von ungefähr Mai oder Juni 2002:
Notizbuch-Seite mit einer Liste der Informationen, die das neue Tool ausgeben sollte
Die älteste Codefassung, die ich in meinem Archiv gefunden habe, trägt leider noch keine Versionsbezeichnung. Sie stammt aus dem Sommer 2002 und hat zu dem Zeitpunkt schon ein paar Bearbeitungsschritte hinter sich. Sie kommt mit 146 Zeilen aus und stellt noch nicht mehr als ein Icon, den Objektnamen und die Beschreibung dar, aber bereits als strukturierte hierarchische OU-Ansicht.
Als älteste mit Version und Datum erhaltene Fassung habe ich die Version 0.7 vom 29. Oktober 2002. Sie umfasst 225 Zeilen und dokumentiert die Objektklassen User, Computer, Kontakte, Gruppen, Freigaben und Drucker mit einem festgelegten Satz an Attributen (maximal vier bestimmte Attribute pro Klasse). Diese Fassung ist noch eine VBS-Datei ohne Konfigurationsfunktion für den Report.
Konfigurierbare Reports
Die Konfigurationsmöglichkeit habe ich dann ab der Version 0.9 vom 5. November 2002 mit einer HTML-Oberfläche gelöst. Hier ist José weiterhin eine Einzeldatei, allerdings nun als HTA (Hypertext Application). Diese Technik nutzt auch die aktuelle Version noch für die Konfigurationsoberfläche.
Screenshot der Version 0.9 von José
In dieser Fassung ist erstmals die Liste der Objektklassen und Attribute nicht festgelegt, sondern man kann sie über das GUI für den jeweiligen Report auswählen. Weiterhin ist die Liste der dokumentierten Attribute damit aber im Programmcode festgelegt.
Die Version 1.0 vom 18. November 2002 führte eine Kurzdokumentation ein und enthielt schon die Anzeige der Links für die Gruppenrichtlinien (seit 0.97). Sie hat bereits 1090 Zeilen, wobei allerdings 500 Zeilen auf den HTML-Code entfallen. Ab wann José im Web verfügbar war, lässt sich nicht mehr genau rekonstruieren. Die älteste Archivkopie meiner damaligen Webseite mit José ist beim Waybackarchive vom 30. Dezember 2002, wo die José-Version 1.05 vom 22. November 2002 verlinkt ist:
[José: Active-Directory-Dokumentation]
http://web.archive.org/web/20021230040006/http://www.kaczenski.de/it-service/jose.htm
Screenshot von www.kaczenski.de in der Archivfassung vom 30. 12. 2002
Der zweite Autor
Die Version 1.05 war für längere Zeit verfügbar. Im September 2003 erhielt ich dann eine Mail von Nils Weinhold, der in seiner damaligen Firma das Tool bis zur Version 1.22 weiterentwickelt hatte. Diese Version stellte ich dann am 9. September 2003 als v1.22 mit der Nennung des “anderen Nils” als aktuelle Fassung online.
Screenshot von www.kaczenski.de in der Archivfassung vom 16. 11. 2002
Hier das Changelog der Version 1.22:
''''''''''''''''''''''''''''''''''''''''''''' ' José: AD-Doku ' Version 1.22 / 09.09.2003 ' Änderung: - Überarbeitung (1.22): ' - Erweiterung der Kurzdoku (1.2x) ' - Pfad kann jetzt Leerzeichen enthalten ' - Dateiablage geändert: ' ./ -> script (Jose.hta) ' ./Dateien -> Grafiken, Styles, Hilfe ' ./Reports -> Dokumentationen ' - Ausgabeverzeichnis ist nicht frei wählbar ' (wegen Links zu Grafiken und Styles) ' - Script bricht nicht mehr ab wenn bei der Auswahl des Dateinamens abgebrochen wird
' - Name der Ausgabedatei ist wieder frei wählbar ' - Layout geändert ' - Bug beseitigt - Objekte unterhalb gewählter Ebene werden angezeigt (1.21) ' - Ausgabemöglichkeit für Eigenschaften in Umgangssprache (1.20) ' - Ausgabe verbessert (1.19) ' - ForeignSecurityPrincipals und Exchange-Container nicht auflisten (1.18) ' - Objekte in Builtin werden angezeigt (1.17) ' - Adressbuchanzeige hinzugefügt (1.16) ' - Option Objektname anstelle des LDAP-Namens anzeigen hinzugefügt (1.15) ' - Darstellung von Eigenschaft und Wert bei der Ausgabe verbessert (1.14) ' - Hinzufügen von Schaltflächen zur vereinfachten Auswahl aller Eigenschaften (1.13)
' - Änderung der Eingabeoberfläche (1.12) ' - Selektion der auszugebenden Objekte nach Ordnern / OU´s (1.11) ' - Weitere Ausgaben (Firma, Abteilung ...) hinzugefügt (1.10) ' - Gruppen und Freigaben werden nicht mehr als gesperrt gekennzeichnet (1.09)
' - Bug in der Darstellung der Ausgabe beseitigt (1.08) ' - Ausgabedokument kann durch Link direkt geöffnet werden (1.07) ' - Eingabeoberfläche verbessert (1.06) ' - Druckeranzeige verbessert (1.05) ' - Deaktivierte/gesperrte Accounts (1.04) ' - Konfiguration Berichtsname, Dateiname (1.03) ' - Exchange-Attribute (1.02) ' - GPO-Lookup korrigiert (1.02) ' - Dateinamen-Uhrzeitformat für US-Version korrigiert (1.01) ' - Kurzdoku (1.0) ' - GPO-Links (0.97) ' - Gruppenmitglieder anzeigen (0.97) ' - Einrückung neu aufgebaut (0.91) ' - Prüfung auf "computer" verbessert (0.91) ' - DN und Legende hinzugefügt (0.91) ' - HTML-Oberfläche zur Konfiguration (0.9) ' ' Tool zur Dokumentation von Active Directory ' Listet die wichtigsten AD-Objekte grafisch ' in einer HTML-Datei auf. ' ' Von Nils@Kaczenski.de ' Überarbeitung (V > 1.05) von Nils Weinhold ' ' Keine Gewähr! Nutzung auf eigene Gefahr! ' '''''''''''''''''''''''''''''''''''''''''''''
Code-Trennung und Automatisierung
Auf dieser Basis entwickelte ich José dann für längere Zeit selbst weiter. Die Downloadzahlen wuchsen kontinuierlich an. Seit etwa 2007 steht José nur noch über faq-o-matic.net zur Verfügung, das im Februar 2005 gegründet wurde. Kleine Versionssprünge fügten immer wieder neue Funktionen und Fähigkeiten hinzu. Weiterhin war es aber immer erforderlich, José per GUI zu konfigurieren und jeden Report einzeln zusammenzuklicken.
Um den Code besser wartbar zu machen und gleichzeitig das Tool automatisieren zu können, habe ich für die Version 2.0 den Code in zwei Teile getrennt. Seither gibt es die HTA-Datei als grafische Oberfläche, in der aber kein Code zur Erzeugung des Reports mehr enthalten ist. Die Berichte generiert seither die getrennte Datei joseexec.vbs, welche sich auch einzeln aufrufen lässt. Über eine einfache Textschnittstelle kann man José seither anweisen, bestimmte Reports zu erzeugen.
Am 29. Oktober 2008 erschien diese Fassung auf faq-o-matic.net:
[faq-o-matic.net » José Active-Directory-Dokumentation: Version 2.0 ist fertig]
http://www.faq-o-matic.net/2008/10/29/jos-active-directory-dokumentation-version-20-ist-fertig/
Neuer, schönerer Code
Ende 2009 wiederholte sich ein Phänomen von 2003: Ein externer Autor, den ich bis dahin nicht gekannt hatte, schickte mir eine überarbeitete Fassung meines Programms. Ansgar Wiechers hatte, ebenfalls aufgrund von Anforderungen seines Unternehmens, das Tool komplett überarbeitet und den Code fast vollständig neu geschrieben. Meine vorherige Fassung war nämlich … naja … nicht mehr unbedingt ein Musterbeispiel an Übersichtlichkeit. Der von Ansgar erzeugte Code trennt verschiedene Funktionen übersichtlich, arbeitet mit einer konsistenten Namens- und Variablenstruktur und ist insgesamt viel professioneller.
Ansgars Code hatte allerdings praktisch keine neuen Funktionen hinzugefügt. Auf der neuen Basis war das aber nun leichter möglich, daher führte ich eine lange und intensive Betaphase durch (mit Unterstützung unseres Partner-Forums MCSEboard.de) und veröffentlichte am 26. Mai 2010 die Version 3.0 von José. In der aktuellen Version ist das Changelog vom Code getrennt, sodass es einfach möglich ist, die Änderungen nachzuvollziehen.
[faq-o-matic.net » José: Version 3.0 ist da]
http://www.faq-o-matic.net/2010/05/26/jos-version-3-0-ist-da/
Ausblick
Die jüngste Version 3.2 hat 2532 Zeilen im VBS-Code (joseexec.vbs) und 1356 Zeilen in der HTA-Datei (jose.hta). Einige der Dinge, die José dokumentiert, stellt nach wie vor kein anderes Werkzeug in vergleichbarer Form dar – dazu zählen etwa Password Settings Objects (PSO), Gruppenrichtlinien-Kommentare oder die detaillierten Informationen zu Gruppenrichtlinien-Verknüpfungen.
Und, ist damit jetzt Schluss? Nein, natürlich nicht. Auf meiner Roadmap stehen noch viele kleine und größere Erweiterungen. Nach wie vor gilt aber: José ist ein Nebenbei-Projekt, das ich nur weiterentwickeln kann, wenn ich genügend Zeit habe. Aber das wird schon …
http://faq-o-matic.net/?p=4043