Export d'utilisateurs active directory dans un fichier excel

Soyez le premier à donner votre avis sur cette source.

Vue 64 700 fois - Téléchargée 3 206 fois

Description

Bonjour, Voici un nouveau script toujours axè utilisateurs Active Directory.

Je sais qu? il existe des Outils pour faire quelque chose de similaire mais bon moi je ne voulais que certains attributs LDAP et puis l? exercice est toujours sympa à réaliser.

Le but du script est : Depuis une INPUTBOX (ou vous renseignerez le nom de votre OU) d? extraire l ensemble des comptes et leurs attributs (la liste est fixe mais vous pouvez en ajouter ou en retirer facilement)

J? espère qu?il est suffisamment commenté pour vous permettre de l ?utiliser ou de l? améliorer à votre bonne guise.

Voila merci (pensé à la petite notes si vous aimé ou utilisé !!!)

Source / Exemple :


' ------ SCRIPT d'export d'utilisateurs depuis une OU 			------
' ------ Le domaine AD est a jouter en fixe dans le 			------
' ------ String StrDomainDN pour des raisons d'utilisations courantes	------

dim fso, MyFile, reptemp, filetext

Stroucible=inputbox("renseigner le nom de l'ou cible : ")

' Attention à modifier le nom LDAP du domaine
strDomainDN ="ou=" & stroucible & ",dc=VotreNomdeDomaine,dc=SonExtention"

' Attention le répertoire c:\temp doit exister
reptemp="c:\temp\"

Filetext=Inputbox("fichier temporaire de l'OU 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")
objConn.Provider = "ADsDSOObject"
objConn.Open "Active Directory Provider"

' Ici lancement de la requêtes et écriture dans le fichier txt dans le c:\temp
set objRS = objConn.Execute(strBase & strFilter & strAttrs & strScope)
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

'Attention le fichier C:\sources.xls doit exister
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 = CNStr
		objExcel.ActiveSheet.Range("B" & i).Value = OuStr
		objExcel.ActiveSheet.Range("C" & i).Value = objUser.givenName
		objExcel.ActiveSheet.Range("D" & i).Value = objUser.initials
		objExcel.ActiveSheet.Range("E" & i).Value = objUser.sn
		objExcel.ActiveSheet.Range("F" & i).Value = objUser.displayName	
		objExcel.ActiveSheet.Range("G" & i).Value = objUser.userPrincipalName
		objExcel.ActiveSheet.Range("H" & i).Value = objUser.SamaccountName
		objExcel.ActiveSheet.Range("I" & i).Value = objUser.mail
		objExcel.ActiveSheet.Range("J" & i).Value = objUser.physicalDeliveryOfficeName
		objExcel.ActiveSheet.Range("K" & i).Value = objUser.telephoneNumber
		objExcel.ActiveSheet.Range("L" & i).Value = objUser.Description

		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

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Pour ceux qui voudrait utiliser ce script avec office 2013 sur leur poste :

Dans le script : changer .xls en .xlsx
Pour le fichier à creer Source.xlsx, attention à la casse (MAJ min)
Pour changer les attributs, reportez vous dans votre ad dans propriété d'un utilisateur, éditeurs d'attributs.
Messages postés
2
Date d'inscription
jeudi 25 septembre 2008
Statut
Membre
Dernière intervention
25 septembre 2008

Bonjour,

DSL pour n'arriver que maintenant.
Le script est Génial. En essayant de faire un complément, j'aimerai pouvoir extraire les comptes qui ont expiré.
je rajoute en fin d'extraction cette ligne mais rien ne monte dans le fichier Excel.
"objExcel.ActiveSheet.Range("N" & i).Value = objUser.accountExpires"

C'est la bonne syntaxe ?

Merci pour la réponse d'avance

Gérald.
Messages postés
13
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
19 septembre 2011
3
Merci bien
Messages postés
5
Date d'inscription
jeudi 21 avril 2011
Statut
Membre
Dernière intervention
11 octobre 2011

Bonjour,
Tout d'abord merci pour ce script !
J'ai tout de même un petit problème. Je veux lister aussi les valeurs de l'attribut accountExpires et dans le fichier Excel je n'ai aucune valeur de cet attribut.
J'ai repris à l'identique le code source que tu as donné et j'ai listé les mêmes attributs. Pour l'attribut displayName, pareil, je n'ai aucune valeur dans la tableau, alors que je sais pourtant que mes utilisateurs ont ce champ rempli.
Comment cela se fait-il ?
Messages postés
2
Date d'inscription
vendredi 7 janvier 2011
Statut
Membre
Dernière intervention
7 janvier 2011

c'est bon j'ai trouvé
par contre, il geenre un fichier txt mais je n'ai pas tout les attributs. juste recuper le nom et prénom
pas compris l'interet du fichier exel
help
Afficher les 30 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.