[Active Directory / LDAP][Récupération d'adresses emails du domaine]

[Récupération d'adresses emails du domaine] [Active Directory / LDAP] - VB/VBA/VBS - Programmation

Marsh Posté le 07-11-2007 à 07:54:20    

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  
 
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 :
  1. ' Export all valid recipients (= proxyAddresses) into a
  2. ' file virtual.txt
  3. '
  4. ' Ferdinand Hoffmann & Patrick Koetter
  5. ' 20021100901
  6. ' Shamelessly stolen from
  7. ' http://www.microsoft.com/windows2000/techinfo/ \
  8. ' planning/activedirectory/bulksteps.asp
  9. 'Global variables
  10. Dim Container
  11. Dim OutPutFile
  12. Dim FileSystem
  13. 'Initialize global variables
  14. Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject" )
  15. Set OutPutFile = FileSystem.CreateTextFile("virtual.txt", True)
  16. Set Container = GetObject("LDAP://OU=Societe,DC=xxxxxxxxxxxxxx,DC=local" )
  17. 'Enumerate Container
  18. EnumerateUsers Container
  19. 'Clean up
  20. OutPutFile.Close
  21. Set FileSystem = Nothing
  22. Set Container = Nothing
  23. 'Say Finished when your done
  24. WScript.Echo "Finished"
  25. WScript.Quit(0)
  26. 'List all Users
  27. Sub EnumerateUsers(Cont)
  28. Dim User
  29. 'Go through all Users and select them
  30. For Each User In Cont
  31. Select Case LCase(User.Class)
  32. 'If you find Users and Groups
  33. 'Added groups after Милен Панков mailed me about it :)
  34. Case "user", "group"
  35.   'Select all proxyAddresses
  36.   Dim Alias
  37.   If Not IsEmpty(User.proxyAddresses) Then
  38.     For Each Alias in User.proxyAddresses
  39.     OutPutFile.WriteLine "alias: " & Alias
  40.     'WScript.Echo Alias
  41.   Next
  42.   End If
  43. Case "organizationalunit" , "container"
  44.   EnumerateUsers User
  45. End Select
  46. Next
  47. 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 :
  1. 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 ...
 
Quelqu'un a t'il une idée?
 
Merci de votre aide, Théo

Reply

Marsh Posté le 07-11-2007 à 07:54:20   

Reply

Marsh Posté le 08-11-2007 à 09:03:36    

Bonjour,
 
Après différents tests, il semblerait que le problème vienne de certains comptes utilisateurs qui "bloquent" le parcours de l'arborescence. 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

Reply

Marsh Posté le 08-11-2007 à 09:46:50    

Il faudrait peut-être t'adresser à des admins système experts en Active Directory, plutôt qu'à des programmeurs à l'(in)expérience hétérogène.
As-tu fait une demande dans la catégorie « Systèmes et réseaux pro » pour compléter celle-ci ?

Reply

Marsh Posté le 08-11-2007 à 10:57:31    

tegu a écrit :

Il faudrait peut-être t'adresser à des admins système experts en Active Directory, plutôt qu'à des programmeurs à l'(in)expérience hétérogène.
As-tu fait une demande dans la catégorie « Systèmes et réseaux pro » pour compléter celle-ci ?


 
C'est ce que je viens de faire, merci du conseil.

Reply

Marsh Posté le 08-11-2007 à 10:58:09    

Deroma1 a écrit :


C'est ce que je viens de faire, merci du conseil.


 
> http://forum.hardware.fr/hfr/syste [...] 1919_1.htm

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed