[R] Insérer le contenu d'une OU dans un Combo

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
denbaat
Niveau 2
Niveau 2
Messages : 21
Enregistré le : mar. 07 févr. 2012 09:28
Status : Hors ligne

[R] Insérer le contenu d'une OU dans un Combo

#1

Message par denbaat »

Bonjour,

Je suis actuellement sur un projet de script avec interface. Un bout de mon code doit se connecter à mon active directory et doit prendre le contenue d'une unité d'organisation (OU) j'utilise la fonction _AD_GetObjectsInOU pour récupérer tout son contenu.

J'ai aucun problème pour récupérer toute les informations que j'ai besoin sous forme de tableau. Mais je sèche totalement pour récupérer cette liste dans un Combo sur l'interface.
Je n'arrive pas du tout à exporter ce tableau en fichier texte.

Voici le code simplifié pour une meilleur visibilité.

Code : Tout sélectionner

#include <AD.au3>
#Include <array.au3>
#include <GUIConstantsEx.au3>
Local $Interface

_AD_Open("COMPTE ADMIN","MDP ADMIN","DC=****,DC=****,DC=****","****","CN=Configuration,DC=****,DC=****")
$OU ="OU=****,OU=****,DC=****,DC=****,DC=****"
$Objects = _AD_GetObjectsInOU($OU, "(name=*)", 2, "sAMAccountName")
_ArrayDisplay($Objects, "Active Directory - OU ""Users""")
_AD_Close()

_GUI_MENU()
While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[1]
        Case $Interface
            Switch $nMsg[0]
                Case $GUI_EVENT_CLOSE
                    Exit
            EndSwitch
    EndSwitch
WEnd

func _GUI_MENU()
    $Interface = GUICreate("Titre", 300, 100, @DesktopHeight/2, @DesktopWidth/6)
    $C_namead = GUICtrlCreateCombo("", 15, 15, 200, 15)
    GUISetState(@SW_SHOW)
EndFunc
Merci d'avance pour des pistes ou des idées :)
Modifié en dernier par denbaat le ven. 31 mai 2013 08:10, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Insérer le contenu d'une OU dans un Combo

#2

Message par mikell »

Je vois pas où est le problème si tu arrives à avoir un tableau ^^
Essaie _ArrayToString + GuiCtrlSetData
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
denbaat
Niveau 2
Niveau 2
Messages : 21
Enregistré le : mar. 07 févr. 2012 09:28
Status : Hors ligne

Re: [..] Insérer le contenu d'une OU dans un Combo

#3

Message par denbaat »

Merci pour ta piste

J'arrive à avoir un tableau.
Avec ta piste j'ai su faire 2-3 choses mais elles ne sont pas satisfaisante.
Petite précision avant de vous montrez mes trouvailles, dans l'OU users j'ai 400 users

J'ai réussi grâce à la fonction _ArrayToString à récupérer tout mes users dans une message box avec un saut a la ligne

Code : Tout sélectionner

_ArrayToString($Objects, @CR, 1, 0 )
J'ai réussi aussi a mettre tout dans un fichier texte, mais sans saut de ligne, au moment de récupérer l'information dans mon fichier texte, les saut de ligne disparaisse

Code : Tout sélectionner

_FileCreate("C:\tableauaors.txt")
$OU ="OU=USERS,OU=******,DC=*****,DC=*****,DC=*****"
$Objects = _AD_GetObjectsInOU($OU, "(name=*)", 2, "sAMAccountName")
$result = _ArrayToString($Objects, @CR, 1, 0 )
MsgBox("","",$result) ;Elle m'affiche bien la liste avec des sauts de ligne
_FileWriteToLine("C:\tableauaors.txt", 1, $result, 1) ;Mon fichier texte na aucun sauts de ligne
 
Concernant le GUICtrlSetData, je ne vois pas comment l'utilisé, j'ai bien une idée mais j'ai un résultat étrange, mon combo à (sans cliquer sur la flèche) une information d'entré, mais c'est un nombre incalculable d'espace.
denbaat
Niveau 2
Niveau 2
Messages : 21
Enregistré le : mar. 07 févr. 2012 09:28
Status : Hors ligne

Re: [..] Insérer le contenu d'une OU dans un Combo

#4

Message par denbaat »

Encore moi, bah en réfléchissant un peu j'ai trouvé.

J'ai mis un pipe entre chaque nom, et j'ai récupérer la variable dans le SetData

Voici le code de test. Il fonctionne, ma liste déroulante possède bien toute la liste d'utilisateur en instantané

Code : Tout sélectionner

#include <AD.au3>
#Include <array.au3>
#include <GUIConstantsEx.au3>
#include <File.au3>

Local $Interface

_AD_Open("****","*****","DC=*****,DC=*****,DC=****","****","CN=Configuration,DC=****,DC=****")
$OU ="OU=****,OU=****,DC=****,DC=****,DC=****"
$Objects = _AD_GetObjectsInOU($OU, "(name=*)", 2, "sAMAccountName")
$test = _ArrayToString($Objects, "|", 1, 0 )
_AD_Close()

_GUI_MENU()
While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[1]
        Case $Interface
            Switch $nMsg[0]
                Case $GUI_EVENT_CLOSE
                    Exit
            EndSwitch
    EndSwitch
WEnd

func _GUI_MENU()
    $Interface = GUICreate("Titre", 300, 100, @DesktopHeight/2, @DesktopWidth/6)
    $B_connect = GUICtrlCreateButton("test",20,60,100,20)
    $C_namead = GUICtrlCreateCombo("", 15, 15, 200, 15)
    GUICtrlSetData($C_namead,$test)
    GUISetState(@SW_SHOW)
EndFunc
Merci pour ta piste, j'ai appris quelque truc avec tout mes tests :)
Répondre