Ekimmu | 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 :
- ' ------ Le domaine AD est a jouter en fixe dans le ------
- ' ------ String StrDomainDN pour des raisons d'utilisations courantes ------
- dim fso, MyFile, reptemp, filetext
- ' Attention à modifier le nom LDAP du domaine
- strDomainDN ="dc=xx,dc=xx,dc=xx,dc=xx,dc=xx"
- ' Attention le répertoire c:\temp doit exister
- reptemp="c:\temp\"
- Filetext=Inputbox("fichier temporaire cible : " )
- Set fso = CreateObject("Scripting.FileSystemObject" )
- ' création d'un fichier txt pour la première partie du script, soit le nom des utilisateurs
- set MyFile = fso.CreateTextFile(reptemp + filetext + ".txt" )
- ' Ici un filtre sur les utilisateurs et je récupére leur Distinguishedname
- strBase = "<LDAP://" & strDomainDN & ">;"
- strFilter = "(&(objectclass=user)(objectcategory=person));"
- strAttrs = "distinguishedname;"
- strScope = "subtree"
- set objConn = CreateObject("ADODB.Connection" )
- set objCmd = Createobject("ADODB.Command" )
- objConn.Provider = "ADsDSOObject"
- objConn.Open "Active Directory Provider"
- 'Ici lancement de la requete avec les propriétés qu'on souhaite
- objTest = strBase & strFilter & strAttrs & strScope
- objCmd.ActiveConnection = objConn
- 'objCmd.Properties("SearchScope" ) = 2
- 'objCmd.Properties("Page Size" ) = 500
- objCmd.CommandText = objTest
- Set objRs = objCmd.Execute
- ' Ici écriture dans le fichier txt dans le c:\temp
- objRS.MoveFirst
- while Not objRS.EOF
- MyFile.WriteLine (objRS.Fields(0).Value)
- objRS.MoveNext
- wend
- MyFile.close
- ' Maintenant avec le fichier txt je récupère les informations utilisateurs par utilisateurs
- on error resume next
- Dim objConnection, objRecords, objExcel, strQuery, i, objSpread, intRow
- strSheet = "c:\Source.xls"
- Set objExcel = CreateObject("Excel.Application" )
- Set objSpread = objExcel.Workbooks.Open(strSheet)
- Set objFSO = CreateObject("Scripting.FileSystemObject" )
- Set UserListe = objFSO.OpenTextFile(reptemp + Filetext + ".txt" )
- 'Renseigner le numéro de la première ligne Excel ou vous souhaité écrire les inforamations
- i = 2
- ' liste des attributs à récupérer
- Do Until UserListe.AtEndofStream
- UserLDAP = UserListe.Readline
- Set objUser = GetObject("LDAP://" & UserLDAP & "" )
- CNStr = left(UserLDAP, Instr (UserLDAP, "," ) -1)
- OuStr = Right(UserLDAP, len(UserLDAP) - Instr (UserLDAP, "," ))
- objExcel.ActiveSheet.Range("A" & i).Value = SamaccountName
- objExcel.ActiveSheet.Range("B" & i).Value = objUser.givenName
- objExcel.ActiveSheet.Range("C" & i).Value = objUser.sn
- objExcel.ActiveSheet.Range("D" & i).Value = objUser.displayName
- objExcel.ActiveSheet.Range("E" & i).Value = OuStr
- objExcel.ActiveSheet.Range("F" & i).Value = objUser.Description
- objExcel.ActiveSheet.Range("G" & i).Value = objUser.GetEx("memberOf" )
- i = i + 1
- loop
- 'Sauvegarde du fichier Excel
- objExcel.ActiveWorkbook.SaveAs(reptemp + Filetext + ".xls" )
- objExcel.ActiveWorkbook.Close
- objExcel.Workbooks.Close
- msgbox "fin de récupération des utilisateurs. Le fichiers excel est dans " + reptemp + Filetext + ".xls"
- 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 :
- objmemberOf = objUser.GetEx("memberOf" )
- For Each objGroup in objmemberOf
- strList = strList & objGroup & vbcr
- Next
|
Si des gens ont des conseils je prend volontier |