none
Name und Beschreibung einer Active Directory Gruppe via VBA / LDAP abfragen RRS feed

  • Frage

  • Liebe Community-Mitglieder,

    ich hoffe ich bin hier richig, aber ich habe kein passenderes Forum gefunden.

    Ich habe folgendes Problem zu lösen: Ich habe mir ein VBA-Makro erstellt mit dem ich die Mitglieder einer Gruppe abfrage und diese dann entsprechend im Worksheet eintrage. Dazu verwende ich die folgende LDAP-Abfrage:

    "<LDAP://DC=test, DC=Domain, DC=lokal> ;(&(objectcategory=group)(name=Guppe1));member"

    Für diese Abfrage verwende ich ein ADODB-Objekt. Alles funktioniert bestens. Nun möchte ich sinnvollerweise auch die Gruppenbeschreibung aus dem AD lesen. Das habe ich mit dem folgenden Befehl versucht:

    "<LDAP://DC=test, DC=Domain, DC=lokal>;(&(objectcategory=group)(name=Guppe1));member,description"

    Diese liefert mir zwar immer noch die Gruppenmitglieder aber nicht die Beschreibung der Gruppe... Ich kann im Ergebnis (vom Typ "RecordSet") die Beschreibung einfach nicht finden... Habt ihr eine Idee was ich falsch mache? Die von mir verwendete Version: Excel 2010.

    Ich bin für jede Hilfe dankbar.

    Gruß

    Werner

    Donnerstag, 3. Mai 2012 20:12

Antworten

  • Hallo Robert,

    vielen Dank! Mit Deiner Hilfe konnte ich mein Problem lösen.

    Hier Die Einzelheiten:

    Es ist richtig, dass das AD-Attribut der Gruppenbeschreibung "description" heißt. Ich bin jetzt mit meinem „Anfängerdenken“ davon ausgegangen, dass bei einer LDAP-Abfrage der entsprechenden Objekt-Attribute (also in meinem Fall: „member“ und „description“ des Objektes „group“) alle Ergebnisse irgendwo im  Record-Set gespeichert werden und problemlos sichtbar sind. Das ist offensichtlich (zu mindestens bei VBA im Überwachungsfenster) nicht der Fall. Wie bereits berichtet hatte ich kein Problem die Gruppenmitglieder abzufragen. Allerdings konnte ich die Gruppenbeschreibung im RecordSet nicht finden… Mit dem folgenden Code ist es mir gelungen die Gruppenbeschreibung (hier: die „Gruppe1“ ) aus dem AD abzufragen und in der String-Variablen „strGruppenbeschreibung“ zu speichern:

      objCommandLocal.CommandText = "<LDAP:// DC=test, DC=Domain, DC=lokal>;(&(objectcategory=group) _(name=gruppe1));member,description;subtree"

      Set objRecordSetLocal = objCommandLocal.Execute

      variantGruppenbeschreibung = objRecordSetLocal.Fields("description").Value

      strGruppenbeschreibung = variantGruppenbeschreibung(0)

    Erklärung des Codes:

    Zeile1 => Speicherung der LDAP-Abfrage

    Zeile2 => Ausführung der Abfrage und Speicherung des Ergebnisses in der Variablen „objRecordSetLocal“ des Typs „RecordSet“

    Zeile3 => Der Wert des Feldes „description“ des RecordSets „objRecordSetLocal“ wird in der Variablen „variantGruppenbeschreibung„ vom Typ „variant“ gespeichert.

    Zeile4 => Wenn man die Gruppenbeschreibung in einer String-Variablen benötigt muss man den Wert des Feldes „0“ der Variablen „variantGruppenbeschreibung“ lediglich in einer String-Variablen speichern.

    Also nochmals vielen Dank. Ohne Deine Links wäre ich nicht auf die Lösung gekommen und hätte mir nächste Woche mal über eine Umschulung Gedanken gemacht ;-).

    Noch zwei kleine Anmerkungen:

    1. Der Link http://answers.microsoft.com/de-de/office/forum/office_2010-excel/name-und-beschreibung-einer-active-directory/d6b30741-f691-469e-a571-45e2258dd0a6 verweist auf eine Diskussion, die ich bei „Microsoft-Answers“ angestoßen habe. Man hat mich da aber (glücklicherweise) an das Entwickler-Forum verwiesen in dem wir uns gerade befinden…
    2. Auf die Definition der Variablen habe ich im obigen Codebeispiel verzichtet, da ich davon ausgehe das ihr euch damit bestens auskennt.

    Gruß

    Werner

    Sonntag, 13. Mai 2012 11:22

Alle Antworten