volkerb
Goto Top

VBA: Gruppen eines Benutzers auslesen und darstellen

Hallo Admins,

ich habe eine Frage zu meinem Skript, welches ich hier habe:
 Dim objUser As Object
    Dim objGroup As Object
    Dim objConnection As Object
    Dim objCommand As Object
    Dim objRecordSet As Object
    Dim strUsername As String
    Dim i As Integer
    Dim lRow As Long

    'Benutzername eingeben  
    strUsername = InputBox("Geben Sie den Benutzernamen ein:")  
    
    'Verbindung mit Active Directory herstellen  
    Set objConnection = CreateObject("ADODB.Connection")  
    objConnection.Provider = "ADsDSOObject"  
    objConnection.Open "Active Directory Provider"  
    
    'Abfrage ausführen  
    Set objCommand = CreateObject("ADODB.Command")  
    objCommand.ActiveConnection = objConnection
    objCommand.CommandText = _
    "<LDAP://DC=ABCD,DC=DE>;(&(objectCategory=User)(sAMAccountName=" & strUsername & "));memberOf;subtree"  
    Set objRecordSet = objCommand.Execute
    
    'Ergebnisse in Excel ausgeben  
    lRow = 2
    For i = 0 To objRecordSet.Fields.Count - 1
        Cells(1, i + 1) = objRecordSet.Fields(i).Name
    Next i
    Do Until objRecordSet.EOF
        For i = 0 To objRecordSet.Fields.Count - 1
            Cells(lRow, i + 1) = objRecordSet.Fields(i).value
        Next i
        objRecordSet.MoveNext
        lRow = lRow + 1
    Loop
    
    'Verbindung schließen  
    objConnection.Close
    Set objConnection = Nothing
    Set objCommand = Nothing
    Set objRecordSet = Nothing

Warum wird der Benutzer, den ich angebe, nicht komplett ausgelesen. Als Beispiel habe ich mein User genommen. Mein Account hat viele Gruppen. Wenn ich das Makro laufen lasse, wird von den vielen nur eine Gruppe ausgegeben.

Ich kann mir nicht erklären warum. Ich bin Admin und habe Rechte auf die AD.

Wäre nett, wenn man mir in dieser Sache unter die Arme greifen kann.

vielen Dank.

Grüße
V
2023-02-08 14_46_35-benutzerabfrage.xlsm - excel

Content-ID: 5910979141

Url: https://administrator.de/contentid/5910979141

Ausgedruckt am: 08.11.2024 um 07:11 Uhr

5175293307
5175293307 08.02.2023 aktualisiert um 15:54:44 Uhr
Goto Top
Weil "memberOf" eine MultiValueProperty/Array ist die man mit "GetEx" abfragen oder via Schleife verarbeiten muss um an alle Werte zu kommen
siehe hier wie es geht AD-User Gruppenmitgliedschaft per CMD auslesen

Dim objConnection As Object
Dim objCommand As Object
Dim objRecordSet As Object
Dim strUsername As String
Dim lRow As Long

'Benutzername eingeben  
strUsername = InputBox("Geben Sie den Benutzernamen ein:")  

'Verbindung mit Active Directory herstellen  
Set objConnection = CreateObject("ADODB.Connection")  
objConnection.Provider = "ADsDSOObject"  
objConnection.Open "Active Directory Provider"  

'Abfrage ausführen  
Set objCommand = CreateObject("ADODB.Command")  
objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
"<LDAP://DC=ABCD,DC=DE>;(&(objectCategory=User)(sAMAccountName=" & strUsername & "));memberof;subtree"  
Set objRecordSet = objCommand.Execute
If objRecordSet.RecordCount > 0 Then
    objRecordSet.MoveFirst
    'Ergebnisse in Excel ausgeben  
    lRow = 2
    Cells(1, 1) = "memberOf"  
    groups = objRecordSet("memberOf").Value  
    If Not IsNull(groups) Then
        For i = 0 To UBound(groups)
            Cells(lRow, 1) = groups(i)
            lRow = lRow + 1
        Next
    Else
        MsgBox "Gruppen für Benutzer '" & strUsername & "' sind leer.", vbExclamation  
    End If
Else
    MsgBox "User nicht gefunden!", vbExclamation  
End If

'Verbindung schließen  
objConnection.Close
Set objConnection = Nothing
Set objCommand = Nothing
Set objRecordSet = Nothing


Gruß wurstel