VBA: Gruppen eines Benutzers auslesen und darstellen
Hallo Admins,
ich habe eine Frage zu meinem Skript, welches ich hier habe:
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 5910979141
Url: https://administrator.de/contentid/5910979141
Ausgedruckt am: 08.11.2024 um 07:11 Uhr
1 Kommentar
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
Gruß wurstel
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