[VB] Lister EmployeeNumber de l'AD

Lister EmployeeNumber de l'AD [VB] - VB/VBA/VBS - Programmation

Marsh Posté le 21-09-2008 à 23:00:49    

Bonjour,  :hello:  
 
Je débute dans la programmation de script, cependant en cherchant un peu sur le net etc, j'ai réussi à avancer dans ce que je cherche à faire :
 
Se connecter à l'AD, chercher tous les utilisateurs ayant le champ EmployeeNumber correspondant à celui du fichier txt.
 
Cependant j'ai une erreur lors de l'execution, j'arrive pas à compter le nombre d'utilisateur ayant ce même champ (justement je veux chercher les doublons) et si il y en a bien que 1, vérifier d'autres informations.
 
Voici le code :

Code :
  1. 'On Error Resume Next
  2. 'Variables
  3. InputFile  = "c:\script\users.txt"
  4. AdminUser  = "administrateur"     
  5. AdminPswd  = "pass"         
  6. Domain     = "domaine.eu"     
  7. NombreEmployee = 0
  8. FormatTelephoneNumber = "E164"
  9. 'Ouverture du fichier txt avec liste des utilisateurs
  10. 'Format .txt avec séparation par virgule
  11. 'employeNumber,Nom,Prénom,numéro de téléphone
  12. Set FSO    = CreateObject("Scripting.FilesyStemObject" )
  13. Set oFile  = FSO.OpenTextFile(InputFile)
  14. 'Connection à Active Directory
  15. part1 = Left(Domain,Instr(Domain,"." ) - 1)
  16. part2 = Mid(Domain,Instr(Domain,"." ) + 1)
  17. Set objConnection = CreateObject("ADODB.Connection" )
  18. Set objCommand    = CreateObject("ADODB.Command" )
  19. objConnection.Provider = "ADsDSOObject"
  20. objConnection.Open "Active Directory Provider"
  21. Set objCommand.ActiveConnection = objConnection
  22. objCommand.Properties("Page Size" ) = 10000
  23. objCommand.Properties("Searchscope" ) = ADS_SCOPE_SUBTREE
  24. Set openDS = GetObject("LDAP:" )
  25. 'Ouverture du fichier txt
  26. Do Until oFile.AtEndOfLine
  27.    LineIn = oFile.ReadLine
  28.    If LineIn <> "" Then
  29.       Champ  = Split(LineIn, "," )
  30.       'Récupération des champs
  31.       Champ(0) = Trim(Champ(0))
  32.       Champ(1) = Trim(Champ(1))
  33.       Champ(2) = Trim(Champ(2))
  34.       Champ(3) = Trim(Champ(3))
  35.      
  36.       'Browse de l'AD à la recherche des EmployeeNumber   
  37.       objCommand.CommandText = _
  38.        "SELECT distinguishedName FROM 'LDAP://dc=" & part1 & ",dc=" & part2 & "' " & _
  39.        "WHERE objectCategory = 'user' " & _
  40.        "AND employeeNumber = '" & Champ(0) & "'"
  41.       Set objRecordSet = objCommand.Execute
  42.       'objRecordSet.MoveFirst
  43.   'Compte du nombre de EmployeeNumber et Erreur si != 1
  44.   NombreEmployee = 0
  45.       Do Until objRecordSet.EOF 
  46.        NombreEmployee = NombreEmployee + 1
  47.        objRecordSet.MoveNext
  48.       Loop
  49.       If NombreEmployee <> "1" Then
  50.        WScript.Echo Champ(0) & Champ(1) & ": Erreur nombre d'EmployeeNumber"
  51.       Else
  52.        WScript.Echo "OK : Un seul EmployeeNumber pour " & Champ(0) & Champ(1)
  53.        'On vérifie tous les champs Email/TéléphoneNumber/nom/Prénom/DisplayName
  54.        DN = objRecordSet.Fields("distinguishedName" ).Value
  55.        'Connection a AD et vérification
  56.        Set usr = openDS.OpenDSObject("LDAP://" & Domain & "/" & DN, AdminUser, AdminPswd, ADS_SECURE_AUTHENTICATION)
  57.       End If
  58.      
  59.      
  60.    End If
  61. Loop
  62. 'Fermeture de toutes les connections
  63. Set usr = Nothing
  64. Set objCommand.ActiveConnection = Nothing
  65. Set objCommand = Nothing
  66. Set objConnection = Nothing
  67. Set openDS = Nothing
  68. Set oFile = Nothing
  69. Set FSO = Nothing


 
Donc si vous avez une idée de pourquoi j'ai une erreur au movefirst (C:\script\Verif_user.vbs(52, 7) ADODB.Recordset: BOF ou EOF est égal à True ou l
'enregistrement actuel a été supprimé. L'opération demandée nécessite un enregis
trement actuel.) ou alors si je le commente au fait que je ne trouve aucun utilisateur ayant le même employeeNumber.
 
Si vous avez une idée ?
 
Merci !  :jap:


Message édité par canigou4 le 21-09-2008 à 23:03:12
Reply

Marsh Posté le 21-09-2008 à 23:00:49   

Reply

Sujets relatifs:

Leave a Replay

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