Active Directory mit Excel auslesen
03. April 2008 von Werner Mager · Gelesen: 3797 · heute: 1Dieser Artikel beschäftigt sich damit, wie man in einer Microsoft Windows Domäne Gruppen oder Logins auflösen kann um z.B. zu prüfen, wer Mitglied in einer Gruppe ist. Der komfortabelste Weg, den ich gefunden habe, ist aus Microsoft Excel heraus.
Das mächtigste Werkzeug für den Zugriff auf das Active Directory ist sicherlich das Programm “Active Directory Users and Computers” aus den administrativen Tools (kann einfach bei Microsoft heruntergeladen werden und läuft auch auf XP-Clients). Dieses Tool kann oder möchte man jedoch nicht immer einfach so beim Kunden installieren. Eine einfache Alternative ist die Suche im Active Directory, die jeder Client von Haus aus kann. Man findet sie über Start > Search > For People.
Hiermit können sowohl Gruppen als auch Benutzer gefunden werden. Man kann sowohl nach dem Namen oder auch dem W2K-Login suchen.
Eine komfortable Liste erhält man dabei aber trotzdem nicht. Daher habe ich ein bisschen mit VBA-Makros experimentiert und mir schließlich ein Excel-Blatt erstellt, über dass ich zum einen eine Gruppe auslesen und zum anderen auch eine Liste von Logins in Namen auflösen kann.
Um die Funktion des Active Directories nutzen zu können, muss im VBA-Editor ein Verweis auf die “Actvie DS Type Library” eingebunden werden:
Nun stehen direkt die Objekte für den Zugriff auf das Active Directory zur Verfügung, z.B. kann mit folgenden 2 Zeilen die Gruppe “Administrators” geöffnet werden:
Dim grp As ActiveDs.IADsGroup Set grp = GetObject("WinNT://sternico.local/Administrators,group")
Die Mitglieder eine Gruppe lassen sich wie folgt auslesen:
Dim member As ActiveDs.IADsUser For Each member In grp.Members member.GetInfo debug.print "Login:" & member.Name debug.print "Name:" & member.FullName Next
Und einen User (in diesem Fall mich
) findet man anhand seines W2K-Logins durch:
Dim user As ActiveDs.IADsUser Set user = GetObject(”WinNT://sternico.local/wm,user”)
Das ganze habe ich nun noch in ein Excel-Blatt eingebunden, so dass man bequem zum einen die Mitglieder einer Gruppe erhalten und zum anderen eine Liste von Logins auflösen kann. Da sich diese Seite als äußerst nützlich erwiesen hat und mir schon manchen Anruf bei der IT-Hotline unserer Kunden erspart hat, stelle ich sie auch gleich an dieser Stelle zur Verfügung:


21. September 2009 um 16:07
Danke du hast meinen Tag gerettet
21. September 2009 um 17:20
03. November 2009 um 16:40
Das ist sehr hilfreich, vielen Dank!
Wie immer, kommt der Appetit mit dem Essen.
Ich möchte das VBA gerne erweitern, so dass es mir die Mail-Adressen zurückgibt. Ich habe bereits versucht, anstelle von user.FullName user.MailAddress auszuwählen, allerdings ohne Erfolg.
Kann mir jemand auf die Sprünge helfen?
Besten Dank schon jetzt.
19. November 2009 um 11:56
Die Email steht über den WinNT nicht zur Verfügung. Hier muß man statt dessen Ldap verwenden:
19. November 2009 um 15:49
Und hier auch noch mal nen Link zu einer Seite, auf der die Felder im Ldap erläutert sind:
http://www.computerperformance.co.uk/Logon/LDAP_attributes_active_directory.htm
20. November 2009 um 17:34
Gefällt mir.
Eine Frage zu der User Abfrage:
Welche Änderung müsste man im script vornehmen wen man anstelle des Users (Login) den ‘DisplayName’ (z.B Mustermann, Max) als Suche eingeben möchte ? Also der umgekehrte weg.
Danke.
20. November 2009 um 19:57
Also bei der Ldap-Variante müßte man nur das Query-Command anpassen. Z.B.:
23. November 2009 um 11:07
Ich habe noch ein Excel Plugin gefunden, welches eigentlich alle Wünsche abdeckt. Es heisst ExcelLdapSearch und ist bei source forge zu finden. Damit durchsucht man vorwärts und rückwärts und da es OpenSource ist, kann und darf man auch selber noch Ergänzungen vornehmen. Ich habe damit alle Anforderungen abdecken können.
Trotzdem herzlichen Dank für die tolle Unterstützung. Ich wünsche eine gute Zeit.
23. November 2009 um 15:46
Supi, werde es bei Gelegenheit testen.
Vielen Dank für eure Hilfe.
MfG
A
23. November 2009 um 18:29
@beginner zu ExcelLdapSearch
in welchem format hast Du die Parameter in der .ini eingetragen ?
…
binddn=?
bindpw=?
basedn=?
…
Danke.
23. November 2009 um 21:17
@Anfänger
ich habe es so eingetragen:
bindn: AD-User
bindpw: Passwort(AD-User)
basedn=DC=ch,DC=xxxxxxx,DC=net (abhängig davon wie Dein AD aussieht)
Gerne und viel Erfolg!
24. November 2009 um 11:40
ok, das mit dem der basedn hatte ich auch schon so, aber es lag wohl an der fehlenden binddn und bindpw. Ich dachte es müsste auch ohne gehen, da es bei anderen ldab scripte die ich mal benutzt habe nie nötig war.
vielen Dank.
Grüße
24. November 2009 um 15:00
Ja klar, wenn Du “andere” ldap scripte startest, z.B. aus dem CMD-Fenster, dann hat das CMD-Fenster deine Windows-(Domänen) Userrechte und erlaubt Dir auf das AD zuzugreifen. Kaum ein Admin erlaubt den anonymen Zugriff auf das AD…
Gruss und schönen Nachmittag.
09. Dezember 2009 um 18:06
Genau das suche ich …
Nur - ich benötige die Informationen zum Office und die Telefonnummer.
Das muss ich doch nicht über LDAP machen, oder??
Was muss ich dafür einsetzen?
Danke!!
18. Dezember 2009 um 21:02
Das interessiert mich auch brennend. Damit könnte ich mir das manuelle ziehen von Listen ersparen.