Bonjour à tou(te)s,
Mon post s'intégre dans un problème plus général évoqué ici http://forum.hardware.fr/hfr/OSAlt [...] 4985_1.htm et fait doublon avec un post que j'ai fait à tort dans un autre forum ici http://forum.hardware.fr/hfr/Progr [...] 9413_1.htm .
Je cherche à récupérer sur un domaine la liste des adresses emails existantes sur le domaine, pour en faire un fichier texte qui sera ensuite envoyé sur une passerelle relais SMTP sous Linux. Je ne suis pas expert en VB ni dans la structure d'Active Directory, ni dans la connaissance de LDAP.
J'ai récupéré un script qui pourrait m'être très utile à cette adresse http://postfix.state-of-mind.de/pa [...] mailrelay/ .
Le voici en détail et modifié par mes soins :
Code :
- ' Export all valid recipients (= proxyAddresses) into a
- ' file virtual.txt
- '
- ' Ferdinand Hoffmann & Patrick Koetter
- ' 20021100901
- ' Shamelessly stolen from
- ' http://www.microsoft.com/windows2000/techinfo/ \
- ' planning/activedirectory/bulksteps.asp
- 'Global variables
- Dim Container
- Dim OutPutFile
- Dim FileSystem
- 'Initialize global variables
- Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject" )
- Set OutPutFile = FileSystem.CreateTextFile("virtual.txt", True)
- Set Container = GetObject("LDAP://OU=Societe,DC=xxxxxxxxxxxxxx,DC=local" )
- 'Enumerate Container
- EnumerateUsers Container
- 'Clean up
- OutPutFile.Close
- Set FileSystem = Nothing
- Set Container = Nothing
- 'Say Finished when your done
- WScript.Echo "Finished"
- WScript.Quit(0)
- 'List all Users
- Sub EnumerateUsers(Cont)
- Dim User
- 'Go through all Users and select them
- For Each User In Cont
- Select Case LCase(User.Class)
- 'If you find Users and Groups
- 'Added groups after Милен Панков mailed me about it :)
- Case "user", "group"
- 'Select all proxyAddresses
- Dim Alias
- If Not IsEmpty(User.proxyAddresses) Then
- For Each Alias in User.proxyAddresses
- OutPutFile.WriteLine "alias: " & Alias
- 'WScript.Echo Alias
- Next
- End If
- Case "organizationalunit" , "container"
- EnumerateUsers User
- End Select
- Next
- End Sub
|
xxxxxxxxxxx correspond à une OU valide masquée pour la confidentialité.
Le script marche et me récupère quelques dizaines d'adresses emails, puis il me fait l'erreur 800A01C3, cet objet n'est pas une collection sur la ligne 43
Code :
- For Each Alias in User.proxyAddresses
|
La structure LDAP à parcourir est la suivante (schématiquement) :
A - B
C
D
E - F
G
H
I
...
W
X
En gros il me récupère bien les adresses emails des OU A à F (il rentre bien dans la sous-unité F), mais dès qu'il rentre dans G paf l'erreur ...
Après quelques tests, j'en ai conclu que quelques utilisateurs n'arrivaient pas à être lus, et je n'ai pas pu identifier ce qui les différenciaient des autres. J'ai solutionné en les mettant en fin de liste ce qui me permet de récupérer la grande majorité des adresses emails, mais cette solution est bancale et ne me plait pas.
Qu'est ce qui peut empêcher le parcours de l'annuaire LDAP dans un compte d'utilisateur Active Directory et qui me provoque cette erreur?
Merci de votre aide, Théo