Logo faq-o-matic.net
Logo faq-o-matic.net

Den LDAP-Pfad eines AD-Objekts anzeigen

von veröffentlicht am15. April 2005, 15:55 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Active Directory, AD: Erweiterte Abfragen   Translate with Google Translate Translate EN   Die angezeigte Seite drucken
Zuletzt aktualisiert: 27. September 2013

Im Verwaltungsprogramm „Active Directory-Benutzer und -Computer“ (ADUC) gibt es keine Möglichkeit, den LDAP-Pfad zu vorhandenen Objekten anzuzeigen. In vielen Fällen wird diese Angabe allerdings benötigt, z.B. beim Scripting oder bei einem Authoritative Restore.

Ein LDAP-Pfad (auch „Distinguished Name“ oder „DN“) beschreibt eindeutig die Position eines Objekts in der Verzeichnishierarchie. Nehmen wir als Beispiel Olga Hurzka, die in der Marketingabteilung der Firma Beispiel AG arbeitet. Ihr Benutzerobjekt hat den LDAP-Pfad „CN=Olga Hurzka, OU=Marketing, DC=beispiel-ag, DC=de“. Active Directory kennt als Erweiterung des DN auch den „AdsPath“, wo vor dem DN noch das Präfix „LDAP://“ steht.

Groß- und Kleinschreibung sind dabei irrelevant, wichtig sind aber die Kürzel: CN steht für „Common Name“ und bezeichnet den allgemeinen Objektnamen innerhalb des jeweiligen Ordners. OU ist bei Microsoft die „Organizational Unit“, also der ADS-Ordner. DC ist die Domain Component (und nicht etwa der Domänencontroller), wohinter sich jeweils ein Abschnitt des DNS-Namens verbirgt, den die Domäne trägt.

Mit Windows-Bordmitteln kann man diesen Pfad leider nicht anzeigen. Ein Workaround ist das folgende Vorgehen:

  • Einschalten der Erweiterten Ansicht (Ansicht/ Erweiterte Funktionen)
  • Aufrufen des Eigenschaften-Fensters für das gesuchte Objekt per Doppelklick
  • Auf der Registerkarte „Objekt“ findet sich nun der „Kanonische Name“ des Objekts. Dies ist nicht der LDAP-Pfad, sondern eine Notation, die einem Dateipfad ähnelt. Es lässt sich aber der LDAP-Pfad daraus ableiten (in umgekehrter Reihenfolge lesen und an den passenden Stellen „DC“, „OU“ und „CN“ einfügen)

Mit einer skriptbasierten Lösung und einer Erweiterung der AD-Konfiguration lässt sich aber auch der tatsächliche LDAP-Pfad direkt aus dem Kontextmenü im Verwaltungsprogramm anzeigen. So geht’s:

AD-Konfiguration erweitern

Mit einem VB-Skript wird in die AD-Konfiguration für die wichtigen Objektklassen ein zusätzlicher Kontextmenü-Eintrag aufgenommen. Dieser verweist auf ein zweites VB-Skript, welches danach auf die jeweilige Admin-Workstation kopiert wird. Die Konfiguration muss nur einmalig geändert werden.

Hier das Skript. Es erweitert das Kontextmenü für eine Reihe von Objeltklassen; leider lässt sich der neue Befehl aber nur bei Benutzern, Kontakten, Ordnern (nicht OUs) und Druckern nutzen (warum, weiß ich noch nicht).

  1. On Error Resume Next
  2. Set root= GetObject(„LDAP://rootDSE“)
  3. If (Err.Number <> 0) Then
  4. BailOnFailure Err.Number, „on GetObject method“
  5. End If
  6. sConfig = root.Get(„configurationNamingContext“)
  7. ‚hardcoded for German
  8. sLocale = „407“
  9. ‚ bei einigen Objektklassen wird der neue Eintrag
  10. ‚ im ADUC leider nicht angezeigt!
  11. arrClass = Array(„user“,„contact“,„group“,„organizationalUnit“, _
  12. „container“,„printQueue“,„computer“,„volume“)
  13. For i=LBound(arrClass) To UBound(arrClass)
  14. sPath = „LDAP://cn=“ & arrClass(i) & „-Display,cn=“ & sLocale & „,cn=DisplaySpecifiers,“ & sConfig
  15. show_items „Display Specifier: „ & sPath
  16. Set obj= GetObject(sPath)
  17. If (Err.Number <> 0) Then
  18. BailOnFailure Err.Number, „on GetObject method“
  19. End If
  20. ‚TODO–check if this is already there.
  21. ‚Add the value for the context menu
  22. sValue = „6,LDAP-Pfad,ADUC_ADSPath_zeigen.vbs“
  23. vValue = Array(sValue)
  24. obj.PutEx 3, „adminContextMenu“, vValue
  25. If (Err.Number <> 0) Then
  26. BailOnFailure Err.Number, „on IADs::PutEx method“
  27. End If
  28. ‚ Commit the change.
  29. obj.SetInfo
  30. If (Err.Number <> 0) Then
  31. BailOnFailure Err.Number, „on IADs::SetInfo method“
  32. End If
  33. show_items „Kontextmenüeintrag hinzugefügt: „ & sValue
  34. Next
  35. “““““““““““““““““““‘
  36. ‚ Display subroutines
  37. “““““““““““““““““““‘
  38. Sub show_items(strText)
  39. WScript.Echo strText, vbInformation, „Add admin context menu“
  40. End Sub
  41. Sub BailOnFailure(ErrNum, ErrText) strText = „Error 0x“ & Hex(ErrNum) & “ „ & ErrText
  42. WScript.Echo strText, vbInformation, „ADSI Error“
  43. WScript.Quit
  44. End Sub

Skript auf der Admin-Workstation

Folgendes Skript muss auf der Admin-Workstation im Suchpfad vorhanden sein. Am einfachsten kopiert man es in den Windows-Ordner. Es trägt den Namen „ADUC_ADSPath_zeigen.vbs“.

  1. Set objArgs = WScript.Arguments
  2. If objArgs.Count <> 2 Then
  3. WScript.Echo „Dieses Skript kann nur aus dem Kontextmenü „ _
  4. & „von Active Directory-User und -Computer aufgerufen „ _
  5. & „werden!“
  6. WScript.Quit
  7. End If
  8. stradspath = objArgs(0)
  9. Set objADS = GetObject(stradspath)
  10. strDN = objADS.distinguishedName
  11. InputBox „LDAP-Pfad:“, „LDAP-Pfad“, strDN

Zur Nutzung: Wenn die Vorbereitungen abgeschlossen sind, klickt man rechts auf ein Objekt (Benutzer, Computer, Ordner oder Drucker) und wählt „LDAP-Pfad“. Der Pfad wird dann angezeigt und kann direkt in die Zwischenablage kopiert werden.

© 2005-2019 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!