Option explicite
Faible adoCommand, adoConnection, strBase, strFilter, strAttributes
Faible objRootDSE, strDNSDomain, strQuery, adoRecordset, strName, groupType, groupName, iRow
Faible objExcel, arrMembers, strMember
'Objets d'AGITATION d'installation.
Placer l'adoCommand = le CreateObject (« ADODB.Command »)
Placer l'adoConnection = le CreateObject (« ADODB.Connection »)
adoConnection.Provider = « ADsDSOObject »
adoConnection.Open « fournisseur actif d'annuaire »
adoCommand.ActiveConnection = adoConnection
'Domaine actif entier d'annuaire de recherche.
Placer l'objRootDSE = le GetObject (« LDAP : //RootDSE »)
strDNSDomain = objRootDSE.Get (« defaultNamingContext »)
strBase = ""
'Filtre sur des groupes de distribution.
strFilter = « (objectCategory=group) »
'Liste délimitée par virgule de valeurs d'attribut à rechercher.
strAttributes = « distinguishedName, membre, groupType, nom »
'Construire la question de syntaxe de LDAP.
strQuery = strBase et « ; » et strFilter et « ; » et strAttributes et « ; sous-arbre »
adoCommand.CommandText = strQuery
adoCommand.Properties (« taille de page ») = 100
adoCommand.Properties (« temps mort ») = 30
adoCommand.Properties (la « cachette résulte ») = faux
'Courir la question.
Placer l'adoRecordset = l'adoCommand.Execute
Placer l'objExcel = le CreateObject (« Excel.Application »)
Avec l'objExcel
.SheetsInNewWorkbook = 1
. Workbooks.Add
. Évident = rectifier
'Énumérer le recordset en résultant.
Faire jusqu'à adoRecordset.EOF
'Rechercher les valeurs et l'affichage.
strName = adoRecordset.Fields (« distinguishedName »). Valeur
groupType = adoRecordset.Fields (« groupType »). Valeur
le groupName = remplacent (adoRecordset.Fields (« nom »). Valeur, « CN= », "")
'obtenir seulement les groupes de distribution
si groupType=2 ou groupType=4 ou groupType=8 alors
irow=1
.ActiveWorkbook.Worksheets.Add
.ActiveSheet.Name= est parti (groupName, 31)
arrMembers = adoRecordset.Fields (« membre »). Valeur
'Groupe de distribution de Wscript.Echo « : » et strName
S'IsNull (arrMembers) puis
'Wscript.Echo « -- »
Autrement
Pour chaque strMember dans les arrMembers
'Wscript.Echo « -- » et strMember
Placer l'objRootDSE = le GetObject (« LDAP : /« &strMember)
. Cellules (l'iRow, 1) = remplacent (objRootDSE.Name, « CN= », "")
irow=irow + 1
Après
Finir si
Finir si
'Se déplacer au prochain disque dans le recordset.
adoRecordset.MoveNext
Boucle
. Colonnes (1).entirecolumn.autofit
Extrémité avec
'Nettoyer.
adoRecordset.Close
adoConnection.Close
Placer l'objExcel = rien
|