vince_fr
Messages postés5Date d'inscriptionvendredi 11 août 2006StatutMembreDernière intervention11 août 2006
-
11 août 2006 à 11:10
vince_fr
Messages postés5Date d'inscriptionvendredi 11 août 2006StatutMembreDernière intervention11 août 2006
-
11 août 2006 à 11:48
Bonjour,
Voici un script qui recherche dans une O.U. donnée les groupes n'ayant aucun membre.
Pour ne pas faire de betise, le script modifie la description du groupe (au lieu de l'effacer).
Ensuite, il suffit de faire un tri par description et d'effacer les groupes.
Vince.
Option Explicit
Dim strGroupDN, objGroup, objFSO, objTextFile, total_member, strmember, shortname, arrMemberOf, group_descript
Dim objConnection, objCommand, objRecordSet, ou_a_traiter
' +-------------------------------------------------------+
' I Profondeur de recherche dans les sous O.U. I
' +-------------------------------------------------------+
Const ADS_SCOPE_SUBTREE = 2
Const ForAppending = 8
' +-------------------------------------------------------+
' I Confirmation d'effacement I
' +-------------------------------------------------------+
Const Pour_de_vrai = 0
' +-------------------------------------------------------+
' I O.U. de debut de traitement I
' +-------------------------------------------------------+
ou_a_traiter = "OU=Groupes Acces Ressources, OU=administration, OU=Commun, OU=siege, DC=id, DC=fr, DC=cly"
' Creation du fichier
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Non du fichier pour la liste des groupes vides
Set objTextFile = objFSO.OpenTextFile _
("Groupes_vides_" & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & ".csv", ForAppending, True)
' Declaration de la requete dans l'A.D.
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
' Execution de la requete dans l'A.D.
Set objRecordSet = objCommand.Execute
' Pointe sur le premier enregistrement resultat de la requete
objRecordSet.MoveFirst
' Passe au deuxieme enregistrement
objRecordSet.MoveNext
' Premiere ligne du fichier resultat
objTextFile.WriteLine("Groupe,NB membre")
' Debut de la boucle
Do Until objRecordSet.EOF
On error resume Next
' Nom complet du groupe
strGroupDN = objRecordSet.fields("DistinguishedName").value
' Nom court du groupe
shortname= objRecordSet.fields("Name").value
Set objGroup = GetObject("LDAP://" & strGroupDN)
Total_member=0
arrMemberOf = objGroup.GetEx("member")
' Si pas d'erreur c'est que le groupe n'est pas vide
If err.number = 0 Then
For Each strMember in arrMemberOf
total_member = total_member+1
Next
Else
' Sinon ajout d'un commentaire sur la description
group_descript = "# Groupe Vide le " & Date & " - " & objgroup.get("description")
objGroup.Put "Description", group_descript
objGroup.SetInfo
' Efface le groupe
If Pour_de_vrai = 1 Then
objgroup.DeleteObject(0)
End If
End If