Beim Monitoring oder bei der Auswertung des Active Directory kann es von Interesse sein, welche Objekte nach einem bestimmten Datum erzeugt wurden. Leider ist es nicht immer ganz einfach, Datumswerte aus dem AD abzufragen oder sie gar als Suchkriterien zu verwenden. Im konkreten Fall hält sich der Aufwand aber in Grenzen. Eine einfache Art, diese Frage zu beantworten, kann mit unserem SQL-basierten AD-Abfragewerkzeug Carmen realisiert werden.
Active Directory speichert das Erzeugungsdatum jedes Objekts in dem Feld “whenCreated”. Daneben gibt es auch das Feld “whenChanged”, das das letzte Änderungsdatum für das betreffende Objekt enthält. Anders als manche anderen Datumsfelder im AD lassen sich diese beiden relativ einfach über eine festgelegte Syntax ansprechen.
In dem SQL-Dialekt, den AD (neben LDAP) versteht, kann man die Frage aus der Überschrift so formulieren:
SELECT distinguishedName,displayName,objectClass,whenCreated FROM ‘LDAP://DC=MeinAD,DC=faq-o-matic,DC=net’ WHERE whenCreated>=’20140701000000.0Z’
Das Interessante daran ist der Datums-String ganz am Ende. Er sieht erst mal aus wie eine fiese Zahlenkette, aber tatsächlich enthält er das Datum in recht einfach lesbarer Form: Jahr – Monat – Tag – Stunde – Minute – Sekunde – Zeitzone. Oder anders ausgedrückt: JJJJMMTThhmmss.0Z (dabei steht 0Z für UTC-Zeit, also die “Null-Zeitzone”).
In Carmen könnte man dies nun so eintragen:
Das Ergebnis ist eine Tabelle mit dem Erzeugungsdatum, der Objektklasse, dem Anzeigenamen und dem LDAP-Speicherpfad aller Objekte, die nach dem betreffenden Zeitpunkt erzeugt wurden.
Das Abfragetool Carmen findet sich hier:
[Carmen: Mit SQL das AD abfragen | faq-o-matic.net]
http://www.faq-o-matic.net/2004/10/20/carmen-mit-sql-das-ad-abfragen/
In einer alten Kolumne der Scripting Guys findet sich ein VBS-Skript, das die Aufgabe ähnlich löst:
[How Can I Get a List of All the Objects that have been Added to Active Directory Since a Specified Date? – Hey, Scripting Guy! Blog – TechNet Blogs]
http://blogs.technet.com/b/heyscriptingguy/archive/2006/01/25/how-can-i-get-a-list-of-all-the-objects-that-have-been-added-to-active-directory-since-a-specified-date.aspx
Man kann die Aufgabe auch rein mit Bordmitteln lösen, indem man sie an das Kommandozeilentool cavde.exe verfüttert. Hier lautet die Syntax für dieselbe Anfrage so:
csvde -f objekte.txt -r "(whenCretaed>=20140701000000.0Z)" -l whenCreated,displayName,objectClass
http://faq-o-matic.net/?p=6048