Script extract user AD VBS

Script extract user AD VBS - VB/VBA/VBS - Programmation

Marsh Posté le 16-11-2012 à 10:02:21    

Je viens vers vous pour un petit problème que je rencontre sur un script VBS.
 
Le but de mon script est d'extraire l'ensembles des utilisateurs de mon domaine avec divers informations et par la suite les mettre en forme sous excel. Pour le moment le script ne marche que pour les utilisateurs, mais je souhaite par la suite pouvoir extraire les ordinateurs.
 
Mon script en lui même marche très bien pour le moment, le voici :
 
 

Code :
  1. ' ------ Le domaine AD est a jouter en fixe dans le    ------
  2. ' ------ String StrDomainDN pour des raisons d'utilisations courantes ------
  3. dim fso, MyFile, reptemp, filetext
  4. ' Attention à modifier le nom LDAP du domaine
  5. strDomainDN ="dc=xx,dc=xx,dc=xx,dc=xx,dc=xx"
  6. ' Attention le répertoire c:\temp doit exister
  7. reptemp="c:\temp\"
  8. Filetext=Inputbox("fichier temporaire cible : " )
  9. Set fso = CreateObject("Scripting.FileSystemObject" )
  10. ' création d'un fichier txt pour la première partie du script, soit le nom des utilisateurs
  11. set MyFile = fso.CreateTextFile(reptemp + filetext + ".txt" )
  12. ' Ici un filtre sur les utilisateurs et je récupére leur Distinguishedname
  13. strBase   =  "<LDAP://" & strDomainDN & ">;"
  14. strFilter = "(&(objectclass=user)(objectcategory=person));"
  15. strAttrs  = "distinguishedname;"
  16. strScope  = "subtree"
  17. set objConn = CreateObject("ADODB.Connection" )
  18. set objCmd = Createobject("ADODB.Command" )
  19. objConn.Provider = "ADsDSOObject"
  20. objConn.Open "Active Directory Provider"
  21. 'Ici lancement de la requete avec les propriétés qu'on souhaite
  22. objTest = strBase & strFilter & strAttrs & strScope
  23. objCmd.ActiveConnection = objConn
  24. 'objCmd.Properties("SearchScope" ) = 2
  25. 'objCmd.Properties("Page Size" ) = 500
  26. objCmd.CommandText = objTest
  27. Set objRs = objCmd.Execute
  28. ' Ici écriture dans le fichier txt dans le c:\temp
  29. objRS.MoveFirst
  30. while Not objRS.EOF
  31. MyFile.WriteLine (objRS.Fields(0).Value)
  32.     objRS.MoveNext
  33. wend
  34. MyFile.close
  35. ' Maintenant avec le fichier txt je récupère les informations utilisateurs par utilisateurs
  36. on error resume next
  37. Dim objConnection, objRecords, objExcel, strQuery, i, objSpread, intRow
  38. strSheet = "c:\Source.xls"
  39. Set objExcel = CreateObject("Excel.Application" )
  40. Set objSpread = objExcel.Workbooks.Open(strSheet)
  41. Set objFSO = CreateObject("Scripting.FileSystemObject" )
  42. Set UserListe = objFSO.OpenTextFile(reptemp + Filetext + ".txt" )
  43. 'Renseigner le numéro de la première ligne Excel ou vous souhaité écrire les inforamations
  44. i = 2
  45.   ' liste des attributs à récupérer
  46.   Do Until UserListe.AtEndofStream
  47. UserLDAP = UserListe.Readline
  48. Set objUser = GetObject("LDAP://" & UserLDAP & "" )
  49.  CNStr = left(UserLDAP, Instr (UserLDAP, "," ) -1)
  50.  OuStr = Right(UserLDAP, len(UserLDAP) - Instr (UserLDAP, "," ))
  51.  objExcel.ActiveSheet.Range("A" & i).Value = SamaccountName
  52.  objExcel.ActiveSheet.Range("B" & i).Value = objUser.givenName
  53.  objExcel.ActiveSheet.Range("C" & i).Value = objUser.sn
  54.  objExcel.ActiveSheet.Range("D" & i).Value = objUser.displayName
  55.  objExcel.ActiveSheet.Range("E" & i).Value = OuStr
  56.  objExcel.ActiveSheet.Range("F" & i).Value = objUser.Description
  57.  objExcel.ActiveSheet.Range("G" & i).Value = objUser.GetEx("memberOf" )
  58.  i = i + 1
  59.   loop
  60. 'Sauvegarde du fichier Excel
  61. objExcel.ActiveWorkbook.SaveAs(reptemp + Filetext + ".xls" )
  62. objExcel.ActiveWorkbook.Close
  63. objExcel.Workbooks.Close
  64. msgbox "fin de récupération des utilisateurs. Le fichiers excel est dans " + reptemp + Filetext + ".xls"
  65. objExcel.Quit


 
 
 
Cependant je souhaiterai pouvoir extraire l'ensemble des groupes de tout les utilisateurs (normalement la ligne 75) mais cela ne marche pas.
J'ai bien trouvé quelque chose qui semble être bon mais je ne sais pas trop comment l’intégrer a mon script :
 

Code :
  1. objmemberOf  = objUser.GetEx("memberOf" )
  2. For Each objGroup in objmemberOf
  3.    strList = strList & objGroup & vbcr
  4. Next


 
 
 
Si des gens ont des conseils je prend volontier

Reply

Marsh Posté le 16-11-2012 à 10:02:21   

Reply

Sujets relatifs:

Leave a Replay

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