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

Forumthread: Active Directory auslesen Nach Nachnamen

Active Directory auslesen Nach Nachnamen
chris
Hallo VBA Profis,
ichhabe heute hier im Forum in der recherche einen Code gefunden.
Mit diesem code kann ich das Active D. auslesen und anhand einer Kennung den oder Die Email Adresse herauslesen.
Ist es auch möglich Anhand eines Nachnamens oder einen Teil des Nachnamens die Kennung auszulesen ? Wenn ja würde mich sehr über Hilfe freuen.
Im voraus vielen vielen Dank !
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: Active Directory auslesen Nach Nachnamen
22.01.2010 10:10:34
JoWE
Hallo Chris,
hast Du schon versucht nach dem Feld 'givenName' zu filtern?
z.B. left(givenname,3) = "Mei"
AW: Active Directory auslesen Nach Nachnamen
22.01.2010 14:59:04
chris
Nein kenne diese funktion nicht
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Active Directory mit Excel VBA auslesen


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    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
  4. Test-Ablauf erstellen: Füge den folgenden Code in dasselbe Modul ein, um die Funktion zu testen:

    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
  5. Makro ausführen: Drücke F5, um das Makro auszuführen. Du wirst nach der Domain und dem Benutzernamen gefragt.


Häufige Fehler und Lösungen

  • Fehler: "Nicht gefunden!"
    Mögliche Ursache: Der Benutzername ist falsch oder existiert nicht in Active Directory. Überprüfe den Benutzernamen und die Domain.

  • Fehler bei der Verbindung
    Stelle sicher, dass der Active Directory Provider installiert und konfiguriert ist. Prüfe die Netzwerkeinstellungen und Berechtigungen.


Alternative Methoden

  • Excel LDAP Abfragen: Du kannst auch die Excel LDAP Funktion verwenden, um Daten aus Active Directory abzufragen. Hierbei wird der LDAP-Protokoll genutzt, um Informationen über Benutzer zu erhalten.

  • PowerShell: Eine weitere Alternative ist die Verwendung von PowerShell, um Active Directory zu abfragen. Dies kann einfacher sein, wenn Du umfangreiche Daten abfragen möchtest.


Praktische Beispiele

  • Nach Namen filtern: Um nach einem Nachnamen zu suchen, kannst Du den givenName-Feld in der SQL-Abfrage anpassen. Beispiel:

    strSQL = "SELECT " & ad_field & " FROM 'LDAP://" & sADDomain & "' WHERE left(givenName, 3) = 'Mei'"
  • Gruppen auslesen: Um Active Directory Gruppen auszulesen, kannst Du die memberOf-Eigenschaft verwenden:

    funcADUserLookup("memberOf", sUser, sADDomain)

Tipps für Profis

  • Fehlerbehandlung erweitern: Füge eine umfassendere Fehlerbehandlung hinzu, um spezifische Fehlerursachen besser zu identifizieren.
  • Optimierung der Abfragen: Optimiere die LDAP-Abfragen, um die Leistung zu verbessern, indem Du nur die benötigten Felder abfragst.
  • Sicherheit: Achte darauf, dass alle Verbindungen zu Active Directory sicher sind und dass Du die richtigen Berechtigungen hast.

FAQ: Häufige Fragen

1. Wie kann ich mehr als nur den Benutzernamen abfragen?
Du kannst die SQL-Abfrage anpassen, um andere Attribute wie E-Mail oder Gruppenmitgliedschaften abzufragen.

2. Welche Excel-Version benötige ich?
Das Beispiel funktioniert mit Excel 2010 und höher, vorausgesetzt, dass das AD-Objekt richtig konfiguriert ist.

3. Kann ich diese Technik in Kombination mit anderen VBA-Funktionen verwenden?
Ja, Du kannst die Active Directory Abfragen mit anderen Excel VBA-Funktionen kombinieren, um komplexere Automatisierungen zu erstellen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige