canigou4 siteman ... | Bonjour, 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 :
- 'On Error Resume Next
- 'Variables
- InputFile = "c:\script\users.txt"
- AdminUser = "administrateur"
- AdminPswd = "pass"
- Domain = "domaine.eu"
- NombreEmployee = 0
- FormatTelephoneNumber = "E164"
- 'Ouverture du fichier txt avec liste des utilisateurs
- 'Format .txt avec séparation par virgule
- 'employeNumber,Nom,Prénom,numéro de téléphone
- Set FSO = CreateObject("Scripting.FilesyStemObject" )
- Set oFile = FSO.OpenTextFile(InputFile)
- 'Connection à Active Directory
- part1 = Left(Domain,Instr(Domain,"." ) - 1)
- part2 = Mid(Domain,Instr(Domain,"." ) + 1)
- Set objConnection = CreateObject("ADODB.Connection" )
- Set objCommand = CreateObject("ADODB.Command" )
- objConnection.Provider = "ADsDSOObject"
- objConnection.Open "Active Directory Provider"
- Set objCommand.ActiveConnection = objConnection
- objCommand.Properties("Page Size" ) = 10000
- objCommand.Properties("Searchscope" ) = ADS_SCOPE_SUBTREE
- Set openDS = GetObject("LDAP:" )
- 'Ouverture du fichier txt
- Do Until oFile.AtEndOfLine
- LineIn = oFile.ReadLine
- If LineIn <> "" Then
- Champ = Split(LineIn, "," )
- 'Récupération des champs
- Champ(0) = Trim(Champ(0))
- Champ(1) = Trim(Champ(1))
- Champ(2) = Trim(Champ(2))
- Champ(3) = Trim(Champ(3))
-
- 'Browse de l'AD à la recherche des EmployeeNumber
- objCommand.CommandText = _
- "SELECT distinguishedName FROM 'LDAP://dc=" & part1 & ",dc=" & part2 & "' " & _
- "WHERE objectCategory = 'user' " & _
- "AND employeeNumber = '" & Champ(0) & "'"
- Set objRecordSet = objCommand.Execute
- 'objRecordSet.MoveFirst
- 'Compte du nombre de EmployeeNumber et Erreur si != 1
- NombreEmployee = 0
- Do Until objRecordSet.EOF
- NombreEmployee = NombreEmployee + 1
- objRecordSet.MoveNext
- Loop
- If NombreEmployee <> "1" Then
- WScript.Echo Champ(0) & Champ(1) & ": Erreur nombre d'EmployeeNumber"
- Else
- WScript.Echo "OK : Un seul EmployeeNumber pour " & Champ(0) & Champ(1)
- 'On vérifie tous les champs Email/TéléphoneNumber/nom/Prénom/DisplayName
- DN = objRecordSet.Fields("distinguishedName" ).Value
- 'Connection a AD et vérification
- Set usr = openDS.OpenDSObject("LDAP://" & Domain & "/" & DN, AdminUser, AdminPswd, ADS_SECURE_AUTHENTICATION)
- End If
-
-
- End If
- Loop
- 'Fermeture de toutes les connections
- Set usr = Nothing
- Set objCommand.ActiveConnection = Nothing
- Set objCommand = Nothing
- Set objConnection = Nothing
- Set openDS = Nothing
- Set oFile = Nothing
- 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 ! Message édité par canigou4 le 21-09-2008 à 23:03:12
|