Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Recherche dans ActiveDirectory [ Langages dérivés / VBScript ] (lostrailler)

lundi 11 décembre 2006 à 11:41:46 | Recherche dans ActiveDirectory

lostrailler

Bonjour à tous.

Voilà j'ai un soucis que je n'arrive aps à résoudre. Je vais essayer d'être clair.

A partir du SamAccountName d'un utilisateur je dois récupérer son UID.

Seulement niveau requête sous Active Directory je n'y connait rien. J'ai essayer de faire un bout de code que voici plus bas mais il n'est pas du tout complet.

Je précise que j'ai plusieurs OU regroupant mes utilisateurs.
- OU Utilisateurs
            - OU1
            - OU2
            - ...

Le problème dans ce script c'est que je me trouve dans l'OU Utilisateurs et je suppose qu'avec ma requête je ne parcours pas mes sous OU.
De plus comment s'appelle le champ pour l'UID et pour le SamAccountName que j'ai besoin pour ma requete.
Si vous pouvez vraiment m'aider se serait vraiment super parceque j'ai l'impression que mon code n'est pas bon du tout. (Je me suis basé d'un code existant mais qui ne faisait pas du tout la même chose)

'Définition des constantes
const OU_USERS_MONDOMAINE= "ou=UTILISATEURS,dc=mondomaine"

On error Resume Next

'Ouverture du tableau Excel
Set appExcel = CreateObject("Excel.Application")
appExcel.Visible = True
appExcel.Workbooks.Open("C:\test.xls")

'Varaible définissant la ligne de recherche dans le fichier Excel
i = 2

'Connexion au domaine
Set OUsource = GetObject("LDAP://" & OU_USERS_MONDOMAINE)
'OUsource.Filter = Array("user")
searchpath = OUsource.ADsPath
Set Connection = CreateObject("ADODB.Connection")
Set Command = CreateObject("ADODB.Command")
Connection.Provider = "ADsDSOObject"
Connection.Open "Active Directory Provider"
Set  Command.ActiveConnection = Connection

'Recherche de l'UID à partir du SamAccountName
While appExcel.Cells(i, 1).value <> ""
        'Récupération du SamAccountName
        SAN = appExcel.Cells(i, 1).value
Je suppose que c'est là que je dois parcourir toutes mes OU mais comment ????
        Command.CommandText = "SELECT ??? FROM '" & searchpath & "' WHERE objectClass='user' AND ??? = '" & SAN & "'"
        Set RecordSet = Command.Execute
        RecordSet.MoveFirst
        'Variable de la colonne
        j = 3
       'Récupération de tous les UID car il peut y avoir des SamAccountName identiques
        While Recordset.EOF = False
                appExcel.Cells(i, j).value = Recordset.Fields("???").value
                j = j + 1
                Recordset.MoveNext
        Wend
        i = i + 1
Wend

Merci d'avance.


lundi 11 décembre 2006 à 12:54:24 | Re : Recherche dans ActiveDirectory

JMO

Membre Club



 Bonjour à tous


Un petit exemple ci-dessous:

Set net   = WScript.CreateObject("WScript.Network")
Set fso   = WScript.CreateObject("Scripting.FileSystemObject")
Set args  = WScript.Arguments

If args.Count = 0 Then
   computer = net.ComputerName
Else
   computer = args(0)
End If

Set GDict = WScript.CreateObject("Scripting.Dictionary")
Set UDict = WScript.CreateObject("Scripting.Dictionary")

Set GUset = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer).InstancesOf _
            ("Win32_GroupUser")

For Each GU in GUset
    Set Group = GetObject("winmgmts:" & GU.GroupComponent)
    set User  = GetObject("winmgmts:" & GU.PartComponent)
    GName = Group.Name
    Uname = User.Name
    If GDict.Exists(GName) Then
       OldList = GDict.Item(GName)
       GDict.Item(GName) = OldList& "," & UName
    Else
       GDict.Add GName, UName
    End If

    If UDict.Exists(UName) Then
       OldList = UDict.Item(UName)
       UDict.Item(UName)=OldList& "," & GName
    Else
       UDict.Add UName, GName
    End If
Next

Dim GTabG,GtabU, UTabU, UTabG
GTabG = GDict.Keys
GtabU = GDict.Items
UTabU = UDict.Keys
UTabG = UDict.Items


jean-marc


lundi 11 décembre 2006 à 13:45:06 | Re : Recherche dans ActiveDirectory

lostrailler

Mais ton exemple ne traite pas directement avec l'AD.

En fait mon problème vient juste de là :

'Recherche de l'UID à partir du SamAccountName
While appExcel.Cells(i, 1).value <> ""
        'Récupération du SamAccountName
        SAN = appExcel.Cells(i, 1).value
Comment parcourir toutes mes OU appartenant à l'OU utilisateur pour exécuter la requete suivante dans chaque OU ?
        Command.CommandText = "SELECT ??? FROM '" & searchpath & "' WHERE objectClass='user' AND ??? = '" & SAN & "'"
        Set RecordSet = Command.Execute
        RecordSet.MoveFirst
        'Variable de la colonne
        j = 3
       'Récupération de tous les UID car il peut y avoir des SamAccountName identiques
        While Recordset.EOF = False
                appExcel.Cells(i, j).value = Recordset.Fields("???").value
                j = j + 1
                Recordset.MoveNext
        Wend
        i = i + 1
Wend


lundi 11 décembre 2006 à 19:05:34 | Re : Recherche dans ActiveDirectory

leSaleGauSS

En fait tu cherches à récupérer le Login de l'utilisateur qui se connecte ...

'Création d'une instance d'environnement pour connaître l'utilisateur actuel 
Set Shell = CreateObject("WScript.Shell" )
'Quel est le Logon de l'utilisateur ?
sUser = LCase(Shell.ExpandEnvironmentStrings("%USERNAME%" ))

... ou l'UO de l'utilisateur ? (moi j'ai pas compris )

Quand je suis là tout va mal  


lundi 11 décembre 2006 à 19:11:16 | Re : Recherche dans ActiveDirectory

leSaleGauSS

Ah sinon tu peut aussi mettre des paramètres comme searchscope qui te permet de fouiller dans toutes l'arborescence de l'AD


searchpath = OUsource.ADsPath
Set Connection = CreateObject("ADODB.Connection")
Set Command = CreateObject("ADODB.Command")
Connection.Provider = "ADsDSOObject"
Connection.Open "Active Directory Provider"
Set  Command.ActiveConnection = Connection


Command.Properties("Searchscope") = 2
'pour plus d'infos sur cette propriété, les sites de microsoft et msdn existent

Quand je suis là tout va mal  


mardi 12 décembre 2006 à 01:07:18 | Re : Recherche dans ActiveDirectory

leSaleGauSS

Pas de nouvelle, bonne nouvelle ?

Quand je suis là tout va mal  


mardi 12 décembre 2006 à 08:36:54 | Re : Recherche dans ActiveDirectory

lostrailler

Je vais tester ca ce matin ;-) je te tiens au courant.
Merci encore

mercredi 13 décembre 2006 à 08:24:20 | Re : Recherche dans ActiveDirectory

lostrailler

Ca ne fonctionne pas, ces classes n'existent pas en VBS. JE vais continuer à chercher :'(

jeudi 14 décembre 2006 à 02:07:44 | Re : Recherche dans ActiveDirectory

leSaleGauSS

De quelle classe parles tu ? de la connection ou le shell ?

Quand je suis là tout va mal  


jeudi 14 décembre 2006 à 08:53:20 | Re : Recherche dans ActiveDirectory

lostrailler

Réponse acceptée !

C'est bon j'ai trouvé ;-)
Voilà comment j'ai fait

'Définition des constantes
const OU_USERS = "dc=MONDOMAINE"
Const ADS_SCOPE_SUBTREE = 2

On error Resume Next

'Ouverture du tableau Excel
Set appExcel = CreateObject("Excel.Application")
appExcel.Visible = True
appExcel.Workbooks.Open("C:\test.xls")

'Varaible définissant la ligne de recherche dans le fichier Excel
i = 2

'Connexion à l'Active Directory
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection

'Recherche de l'UID à partir du SamAccountName
While appExcel.Cells(i, 1).value <> ""
        'Récupération du SamAccountName
        SAN = appExcel.Cells(i, 1).value
        'Initialisation de la variable de la colonne
        j = 3
        'Création et exécution de la requête
        objCommand.CommandText = _
                "Select distinguishedName from " & _
                        "'LDAP://" & OU_USERS & "' where objectClass='user'" & _
                        " and samAccountName = '" & SAN & "'"
        objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
        Set objRecordSet = objCommand.Execute
       'On se place au premier enregistrement
        objRecordSet.MoveFirst
        'On parcours la liste et on rajoute l'UID
        Do Until objRecordSet.EOF
                user = objRecordSet.Fields("distinguishedName").value
                set objUser = GetObject("LDAP://" & user)
                appExcel.Cells(i, j).value = objUser.uid
                j = j + 1
                objRecordSet.MoveNext
        Loop
        i = i + 1
Wend

'Fermeture
objConnection.close
Set ibjUser = Nothing
Set objRecordSet = Nothing
Set objCommand = Nothing
Set appExcel = Nothing




Cette discussion est classé dans : set, connection, command, appexcel, samaccountname


Répondre à ce message

Sujets en rapport avec ce message

Connection ODBC Oracle+nombre d'enregistrements [ par keke ] Voici mon code: Set WSODBC = DBEngine.CreateWorkspace("EspaceWork", "", "", dbUseODBC) Workspaces.Append WSODBC Set datoutil = WSODBC.Ope connection a une base de données [ par gandalfgris ] bonjour,j'utilise une connection a une base tres simple..set base = opendatabase(bdd) ' bdd = adresse de ma base accessensuite j'ouvre ma base par set Impossible d'ouvrir Excel depuis VB [ par legofan ] Hello,J'essaie désespérément de lancer excel depuis ma form avec le code suivant:Dim appExcel As Excel.ApplicationDim wbExcel As Excel.Workbook< visual basic et excel [ par T103 ] je voudrai cree une application sous vb ki me permete de lire des valeure dans un fichers excel, mai lorske jexecute mon code jai une erreur : erreur prob de requete SQL [ par nikostaf ] salut, Bon voila je voulai juste supprimer les enregistrements de tel ou tel table suivant le choix dans ma combo, ca marchait tres bien avec juste un Base de donnée Recorde set et datacombo [ par PsYKrO ] Bonjour à touspublic connection as new.ADODB.connectionpublic commande as new.ADODB.CommandPublic record_db as new ADODB.RecorsetPulibc sub connexion_ Au secours pb excel [ par elbrahimo ] salut je n'arrive pas à trouver d'où vient mon probleme, j'importe un fichier texte vers excel, cela marche bien qu'une fois, mais à la deuxieme fois Probleme requete en vbs (erreur) [ par David92 ] Bonjour,J'esssaye de faire un script tout simple qui doit me retourner une valeurs dans une table.Lorsque je lance mon script, il me retourne une erre erreur dans code vb [ par fab101 ] Bonjour voila j'ai fait ce code qui permet d'ajouter des donnnées dans access a partir de excel erreur dans code vb [ par fab101 ] Bonjour voila j'ai fait ce code qui permet d'ajouter des donnnées dans access a partir de excel


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,577 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.