Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Gruppenmitglieder aus ActiveDirectory auslesen

Gruppenmitglieder aus ActiveDirectory auslesen
Arthur
Hallo Forum.
Vielleicht bin ich nur eingerostet oder stehe nur auf dem Schlauch. Jedenfalls liegt mein Problem in einer Ecke in der ich mich selten bewege. Vielleicht kann mir jemand helfen.
Das Problem: In einer Domain habe ich eine ActiveDirectory-Liste mit Mitgliedern. Der Domainname sowie der Name der AD-Liste ist bekannt. Die Mitglieder möchte ich gerne auslesen und in einer Tabelle auflisten.
Der unten stehende Code geistert hier im Forum herum, jedoch bekomme ich ihn nicht ans Laufen. Unter der Angabe einer ID (eines Benutzers) erhalte ich seinen Eintrag. Jedoch geht es zunächst darum den Benutzer in einer bestimmten ActiveDirectory-Liste zu ermitteln.
Muss eventuell nur der SQL geändert werden?
Gruß und Dank, Arthur
Option Explicit

Function funcADUserLookup(ad_field, sSearch, sADDomain)
Dim objConn As Object, objCommand As Object, objRS As Object
Dim strSQL As Variant
On Error Resume Next
Set objConn = CreateObject("ADODB.Connection")
objConn.Provider = "ADsDSOObject"
objConn.Open "Active Directory Provider"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConn
strSQL = "SELECT " & ad_field & " FROM 'LDAP://" & sADDomain & "' WHERE samaccountname = '"  _
_
_
& sSearch & "'"
objCommand.CommandText = strSQL
Set objRS = objCommand.Execute
funcADUserLookup = objRS.Fields(ad_field).Value
Set objConn = Nothing
Set objCommand = Nothing
Set objRS = Nothing
End Function

Sub Test_Ablauf()
Dim oWSHShell As Object
Dim dom As String, sUser As String, sADDomain As String
Dim ouser As String, mail As String
On Error Resume Next
Set oWSHShell = CreateObject("Wscript.Shell")
dom = InputBox("domaene")
sUser = InputBox("user")
sADDomain = dom
ouser = funcADUserLookup("distinguishedName", sUser, sADDomain)
mail = funcADUserLookup("mail", sUser, sADDomain)
If ouser = "" Then
MsgBox sUser & " nicht gefunden!"
Else
MsgBox ouser & vbCrLf & mail & vbCrLf
End If
Set oWSHShell = Nothing
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Gruppenmitglieder aus ActiveDirectory auslesen
26.06.2012 13:38:09
Arthur
.... perfekt ;o)
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Gruppenmitglieder aus ActiveDirectory auslesen


Schritt-für-Schritt-Anleitung

Um Mitglieder einer AD-Gruppe auszulesen, benötigst Du ein Skript in VBA (Visual Basic for Applications). Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject" > "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das neue Modul:
Option Explicit

Function funcADUserLookup(ad_field As String, sSearch As String, sADDomain As String) As String
    Dim objConn As Object, objCommand As Object, objRS As Object
    Dim strSQL As String
    On Error Resume Next
    Set objConn = CreateObject("ADODB.Connection")
    objConn.Provider = "ADsDSOObject"
    objConn.Open "Active Directory Provider"
    Set objCommand = CreateObject("ADODB.Command")
    objCommand.ActiveConnection = objConn
    strSQL = "SELECT " & ad_field & " FROM 'LDAP://" & sADDomain & "' WHERE samaccountname = '" & sSearch & "'"
    objCommand.CommandText = strSQL
    Set objRS = objCommand.Execute
    If Not objRS.EOF Then
        funcADUserLookup = objRS.Fields(ad_field).Value
    Else
        funcADUserLookup = ""
    End If
    Set objConn = Nothing
    Set objCommand = Nothing
    Set objRS = Nothing
End Function

Sub Test_Ablauf()
    Dim oWSHShell As Object
    Dim dom As String, sUser As String, sADDomain As String
    Dim ouser As String, mail As String
    On Error Resume Next
    Set oWSHShell = CreateObject("Wscript.Shell")
    dom = InputBox("Bitte gib die Domain ein")
    sUser = InputBox("Bitte gib den Benutzernamen ein")
    sADDomain = dom
    ouser = funcADUserLookup("distinguishedName", sUser, sADDomain)
    mail = funcADUserLookup("mail", sUser, sADDomain)
    If ouser = "" Then
        MsgBox sUser & " nicht gefunden!"
    Else
        MsgBox ouser & vbCrLf & mail & vbCrLf
    End If
    Set oWSHShell = Nothing
End Sub
  1. Führe das Skript aus: Drücke F5, um die Test_Ablauf-Subroutine zu starten. Du wirst aufgefordert, die Domain und den Benutzernamen einzugeben.

Häufige Fehler und Lösungen

  1. Fehler: "Benutzer nicht gefunden!"

    • Lösung: Überprüfe, ob der Benutzername und die Domain korrekt eingegeben wurden. Achte auf Tippfehler.
  2. Fehler beim Verbinden mit Active Directory

    • Lösung: Stelle sicher, dass Du über die notwendigen Berechtigungen verfügst und die Active Directory-Dienste aktiv sind.
  3. Lange Ladezeiten

    • Lösung: Überprüfe die Netzwerkverbindung. Bei großen AD-Datenbanken kann das Auslesen einige Zeit in Anspruch nehmen.

Alternative Methoden

Neben VBA kannst Du auch Excel mit einer LDAP-Abfrage nutzen. Hierzu verwendest Du die Funktion =WEBSERVICE(), um Daten von einem LDAP-Server abzurufen. Diese Methode erfordert jedoch Kenntnisse in der LDAP-Abfrage-Formatierung.


Praktische Beispiele

  1. Auslesen aller Mitglieder einer AD-Gruppe: Du kannst den SQL-Teil im VBA-Code anpassen, um alle Benutzer einer bestimmten Gruppe auszulesen.
strSQL = "SELECT member FROM 'LDAP://" & sADDomain & "' WHERE objectClass='group' AND cn='Gruppenname'"
  1. Abfragen von AD-Benutzerdaten: Um mehr Informationen über einen Benutzer zu erhalten, kannst Du weitere Felder in der funcADUserLookup-Funktion angeben.

Tipps für Profis

  • Verwende Error Handling: Implementiere On Error GoTo für eine bessere Fehlerbehandlung und um genaue Fehlermeldungen anzuzeigen.
  • Optimierung der Abfragen: Reduziere die Anzahl der zurückgegebenen Felder, um die Leistung zu verbessern.
  • Verstehe die LDAP-Struktur: Ein grundlegendes Verständnis der Active Directory- und LDAP-Struktur kann Dir helfen, bessere Abfragen zu formulieren.

FAQ: Häufige Fragen

1. Wie kann ich die Gruppenmitglieder einer AD-Gruppe auslesen?
Du kannst die funcADUserLookup-Funktion anpassen, um speziell nach Gruppenmitgliedern zu suchen, indem Du die LDAP-Abfrage entsprechend änderst.

2. Welche Excel-Version benötige ich?
Das VBA-Skript funktioniert in Excel 2010 und neueren Versionen. Stelle sicher, dass die Active Directory-Dienste auf Deinem System verfügbar sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige