[RESOLU] [VBS] recherche OU d'un utilisateur donné d'Active directory

recherche OU d'un utilisateur donné d'Active directory [RESOLU] [VBS] - VB/VBA/VBS - Programmation

Marsh Posté le 15-02-2006 à 08:30:39    

Bonjour,
 
Il me faudrait un script qui me permettre de connaître l'OU d'un utilisateur donné, si quelqu'un peut m'aider se serait sympa!  
 
j'ai essayé ce code :  
 

Citation :

Set objConnection = CreateObject("ADODB.Connection" )  
Set objCommand =   CreateObject("ADODB.Command" )  
objConnection.Provider = "ADsDSOObject"  
objConnection.Open "Active Directory Provider"  
 
Set objCOmmand.ActiveConnection = objConnection  
objCommand.CommandText = _  
  "Select ou from 'LDAP://DC=pdch,DC=fr'Where objectClass='user' and samAccountName='"& MonCompte  & "'"  
Set objRecordSet = objCommand.Execute  
objRecordSet.MoveFirst  
     
if objRecordSet.EOF=false then  
         wscript.echo objRecordSet.Fields("OU" ).Value  
end if


 
Je n'ai pas d'erreur mais il m'affiche null, pourquoi??  
 
je viens de trouver un morceau de code qui affiche l'OU de l'utilisateur courant ou de l'ordinateur mais comment l'adapter à mon cas ?  
 

Citation :

Set objADSysInfo = CreateObject("ADSystemInfo" )  
WScript.Echo "Current site name: " & objADSysInfo.SiteName


 
Pour l'instant j'ai trouvé une solution qui fonctionne mais qui ne me conviens pas forcément. Je parcours les OU une par une, puis je compare les utilisateurs un à un afin de voir si le nom d'utilisateur entré correspond a l'utilisateur.


Message édité par Sboubinette62 le 16-02-2006 à 15:13:02
Reply

Marsh Posté le 15-02-2006 à 08:30:39   

Reply

Marsh Posté le 16-02-2006 à 11:28:00    

Salut !
 
le script suivant permet de retrouver le DistinguishedName de l'utilisateur (donc le chemin ldap complet contenant l'OU), il faut juste renseigner le nom de l'utilisateur comme argument.
 
' ---------
' script pour retrouver des paramètres spécifiques
' à l'utilisateur en partant de son login
' pas de droits spécifiques nécessaires au niveau AD
' --------
 
' récupération du login de l'utilisateur en arguemnt
 
set oArgs = wscript.arguments
usrLOG = oArgs(0)
 
' Recherche du login dans AD
' cette première section se connecte au contexte du domaine
Set objDSE = GetObject("LDAP://rootDSE" )
set oConnection = CreateObject("ADODB.Connection" )
oConnection.Provider = "ADsDSOObject"
oConnection.Open "ADs Provider"  
 
' ci dessous le filtre sur le login utilisateur  
sFilter = "(&(objectclass=user)(samaccountname=" & usrLOG & " ))"
 
' dans cette ligne, on défini les paramètres récupéré : ici  
 DistinguishedName
' c'est celle ci que vous pouvez modifier en fonction des paramètres ADSI à récupérer (paramètre avant subtree, séparé par des virgules)
 
sQuery = "<LDAP://" & objDSE.Get("defaultNamingContext" ) & ">;" & sFilter & ";distinguishedName;subtree"
Set oRecordSet = oConnection.Execute(sQuery)
 
' on inscrit le distinguishedName dans une variable, et voilà
usrDN = oRecordset.Fileds("distinguishedName" ).value
oConnection.Close
 
' affichage du distinguishedName pour la forme :
wscript.echo usrDN
 
j'espère que ça peut t'aider.


Message édité par pilosite le 16-02-2006 à 11:28:51
Reply

Marsh Posté le 16-02-2006 à 12:52:30    

pilosite jte remercie je vais tester ça et c'est tout à fait ce que je cherchais!
ça marche super bien, c'est beaucoup plus rapide que ce que j'avais fait, c'est pile poil ce qui me fallais!
C'est toi qui a écris ce script?


Message édité par Sboubinette62 le 16-02-2006 à 14:18:47
Reply

Marsh Posté le 17-02-2006 à 10:08:09    

:jap: tant mieux! c'est effectivement la méthode la plus rapide que je connaisse pour l'interrogation AD, mais y a plus légé niveau code... par contre cette méthode te permet de rappatrier n'importe quel argument d'un objet, pas seulement le DistinguishedName,
 
suffit de rajouter le nom ADSi de l'argument dans la query séparés par des virgules :
 
sQuery = "<LDAP://" & objDSE.Get("defaultNamingContext" ) & ">;" & sFilter & ";distinguishedName,cn,Mail;subtree"  
 
et en dessous d'inscrire l'argument dans une variable du style :
 
usrMail = oRecordset.Fileds("Mail" ).value  
 
@+


---------------
Envie de scripting ? Lisez donc "Scripting Windows" aux Editions Eyrolles ! tout pour apprendre le scripting orienté infrastructure Microsoft, en français dans les textes et exemples.  http://www.eyrolles.com/Informatiq [...] 212116922/
Reply

Marsh Posté le 17-02-2006 à 10:15:40    

c'est cool!
justement je voulais te demander comment ça marche vraiment le filtre, la syntaxe en gros?

Reply

Marsh Posté le 17-02-2006 à 10:27:22    

et bah voilà, tu as la syntaxe :)
 
après, le truc c'est connaitre les noms exacts des différents arguments des objets AD. A ce titre je vous conseil ce site internet:
 
http://www.dx21.com/SCRIPTING/ADSI/INDEX.ASP
 
il fourni l'ensemble des paramètres ADSI des objets utilisateurs et ordinateurs, avec des exemples de scripts très complet, un must pour le scripting ADSI


---------------
Envie de scripting ? Lisez donc "Scripting Windows" aux Editions Eyrolles ! tout pour apprendre le scripting orienté infrastructure Microsoft, en français dans les textes et exemples.  http://www.eyrolles.com/Informatiq [...] 212116922/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed