ADsPath erkennen und anordnen

  • hallo mal wieder ;)

    folgendes ding. Ich lese alle OUs eines ADs aus.


    Spoiler anzeigen
    [autoit]


    #NoTrayIcon
    #include <GUIConstants.au3>
    #include <GuiTreeView.au3>
    GUICreate ("User erstellen", "1024","560")
    GUISetState (@SW_SHOW)
    Const $ADS_SCOPE_SUBTREE = 2

    [/autoit] [autoit][/autoit] [autoit]

    $logondomain = "put"
    $LogonDNS = "local"

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $objConnection = ObjCreate("ADODB.Connection")
    $objCommand = ObjCreate("ADODB.Command")
    $objConnection.Provider = "ADsDSOObject"
    $objConnection.Open ("Active Directory Provider")
    $objCommand.ActiveConnection = $objConnection

    [/autoit] [autoit][/autoit] [autoit]

    $objCommand.Properties("Page Size") = 1000
    $objCommand.Properties("Searchscope") = $ADS_SCOPE_SUBTREE

    [/autoit] [autoit][/autoit] [autoit]

    $objCommand.CommandText = "SELECT ADsPath FROM 'LDAP://dc="&$logondomain&",dc="&$LogonDNS&"' WHERE " & "objectCategory='organizationalUnit'"

    [/autoit] [autoit][/autoit] [autoit]

    $objRecordSet = $objCommand.Execute

    [/autoit] [autoit][/autoit] [autoit]

    $objRecordSet.MoveFirst()

    [/autoit] [autoit][/autoit] [autoit]

    $treeview = GUICtrlCreateTreeView (0,0,1024,100,BitOr($TVS_HASBUTTONS,$TVS_HASLINES,$TVS_LINESATROOT,$TVS_DISABLEDRAGDROP,$TVS_SHOWSELALWAYS),$WS_EX_CLIENTEDGE)

    [/autoit] [autoit][/autoit] [autoit]

    do
    $OUtree_2 = GUICtrlCreateTreeViewItem ($objRecordSet.Fields("ADsPath").Value,$treeview)
    GUICtrlSetImage(-1, "shell32.dll", 3)
    until $objRecordSet.MoveNext() Or $objRecordSet.EOF()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    EndSwitch
    wend

    [/autoit] [autoit][/autoit] [autoit][/autoit]


    Die Ausgabe sieht dann z.B. so aus:

    LDAP://OU=test,DC=PUT,DC=LOCAL
    LDAP://OU=test1,OU=test,DC=PUT,DC=LOCAL


    so nun sehen wir ja das test1 eine unterou von test ist. wie erkläre ich ihm nun das er da ein + macht (wies halt im AD ausschaut). Ist meine Abfrage falsch oder kann man dieses irgendwie sortieren bzw. erkennen lassen.

    thx

    Edit BugFix: Spoiler eingefügt

    • Offizieller Beitrag

    Wenn "test1" als SubItem von "test" erscheinen soll, dann muß es auch als solches erstellt werden. Mußt du wahrscheinlich die Erstellungsroutine etwas umbauen.

    [autoit]

    $Item = GUICtrlCreateTreeViewItem("test", $treeview)
    $SubItem = GUICtrlCreateTreeViewItem("test1", $Item)

    [/autoit]
  • Ja das kenne ich ja - das ist ja dann aber eine statische Lösung. Ich kenne doch vorher die OUs nicht bzw. die UnterOUs. Das Proggramm liest das AD nach OUs aus und gibt diese wie oben als Beispiel beschrieben zurück. Und jeztzt muss eine sortierung erfolgen nach 1.ou dann die dazugehörige unter ou und so weiter.

    • Offizieller Beitrag
    Zitat

    Und jeztzt muss eine sortierung erfolgen nach 1.ou dann die dazugehörige unter ou und so weiter.


    Genau das meinte ich ja, du mußt dein Skript umbauen.
    - Alle ermittelten Objekte zwischenspeichern ($Array)
    - OU's und Unter-OU's selektieren ==> ich weiß nicht wie die Struktur ist, ob über den Namen die entsprechenden Zugehörigkeiten erkennbar sind.
    Ist sicher etwas aufwendig, aber wenn zusammengehörige OU's auch gleiche Namensbestandteile haben sollte das machbar sein.
    - Erst dann TreeviewItems erstellen.

    Zeig doch mal ein paar Bsp.-Namen, damit man sich eine Vorstellung machen kann.

  • das z.B. wäre eine solche aktuelle Ausgabe

    LDAP://OU=test,DC=PUT,DC=LOCAL
    LDAP://OU=test1,OU=test,DC=PUT,DC=LOCAL

    im AD hätte es die struktur:

    -Test
    ...test1

  • Das ist doch dynamisch. Es kann doch X OUs auf einem Server geben bzw. X unterOUs. Praktisch unendlich. Hast du ein Test AD da? Dann siehst du das doch das immmmmmer wieder Unterous erzeugen kannst.

    welche du vorher nicht kennst....weil soll ja ausgekesen werden.
    teste das script mal in ner testumgebung.

    • Offizieller Beitrag

    Hi fry2k...

    Es sollte deine Aufgabe sein, uns einen echten Beispielbaum darzustellen, nicht die von BugFix oder sonstwem.
    Du willst ja Hilfe und du hast auch Zugriff, der es dir ermöglicht, ordentliche Beispieldaten zu liefern, also ans Werk :).

    peethebee

    • Offizieller Beitrag
    Zitat

    Das ist doch dynamisch.

    Und gerade deswegen brauche ich mal mehr als nur 2 Daten.
    Es gibt sicher mehrere Lösungswege. Um zu entscheiden, welchen man einschlägt, ist es von entscheidender Bedeutung die Struktur zu kennen.
    Wenn es z.Bsp. so aussieht:

    dann ist es recht einfach, weil jedes SubItem, dass auch als 'ParentItem' für SubSubItems gilt, namentlich voll in den SubSubItems enthalten ist.
    Und aus diesem kühlen Grunde (boah, was'n Wortspiel bei der Hitze :D ) brauche ich einfach mehr Text. ;)

  • Ja aber wir wissen doch alle um was es geht. OUs hat den Wert X und wir benötigen die selectierung.


    sry wenn ich zu grob war....

    Das script funzt übrigens so schon ganz gut, ihr könnt es ja mal auf nem testserver testen da versteht ihr was ich meine. thx

    • Offizieller Beitrag
    Zitat

    Original von fry2k
    Ja aber wir wissen doch alle um was es geht. OUs hat den Wert X und wir benötigen die selectierung.


    sry wenn ich zu grob war....

    Das script funzt übrigens so schon ganz gut, ihr könnt es ja mal auf nem testserver testen da versteht ihr was ich meine. thx

    OK, mehr als bitten kann ich dich nicht. Und deine Kenntnis dessen, was "wir" wissen würde ich nochmals überdenken, wenn ich um Hilfe bitte.

    [Blockierte Grafik: http://home.arcor.de/bugfix/icon_bugfix1.gif]

  • ...Foren sind zum austauschen da und nicht zum ach bitte ach danke oh wie schön. bussy küsschen....


    wir alle wollen einen nutzen davon haben.

  • Hi,

    Aus gegebenem Anlass (bastel gerade an was ähnlichem, ebenfalls Benutzer erstellen) hat sich da was getan? Hab auch schon was länger gesucht, aber so richtig hab ich nix gefunden..

    Gruß

    Peter