J'ai deja pose la question mais comme la solution na pas etais trouver je vous la repose
je suis au bord de la crise de nerf
voisi mon scriptdim a
a=0
Set fsobj = CreateObject("Scripting.FileSystemObject")
Set tf = fsobj.CreateTextFile("C:\Documents and Settings\All Users\Bureau\MajSalarie.ldif", True)'crée le fichier
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
"Select displayName, department , mail ,distinguishedName, sn, title, telephoneNumber,otherTelephone,othertelephone, l from " & _
"'LDAP://DC=cagri76,DC=int' where objectClass='person'order by sn"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 30
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
If (isnull(objRecordSet.Fields("sn").Value)) and (isnull(objRecordSet.Fields("mail").Value)) or(isnull(objRecordSet.Fields("l").Value)) then
objRecordSet.MoveNext
else
a=a+1
tf.write("DN:CN=")&(objRecordSet.Fields("sn").Value &(",OU=personnes,OU=CA76,OU=cda,DC=chambagri") &chr(13)& chr(10))& _
("changetype: modify")&chr(13)& chr(10) & _
("objectclass: personne")&chr(13)& chr(10) & _
("objectclass: personneCA")&chr(13)& chr(10) & _
("objectclass: salarie")&chr(13)& chr(10) & _
("cn:")&(objRecordSet.Fields("displayName").Value &chr(13)& chr(10)) & _
("sn:")&(objRecordSet.Fields("sn").Value &chr(13)& chr(10)) & _
("metier:")&(objRecordSet.Fields("title").Value &chr(13)& chr(10)) & _
("postetel:")&(objRecordSet.Fields("telephoneNumber").Value &chr(13)& chr(10))& _
("site:")&(objRecordSet.Fields("l").Value &chr(13)& chr(10)) & _
("service:CN=")&(objRecordSet.Fields("department").Value &(",OU=services,OU=Groupes,OU=CA76,OU=cda,DC=chambagri") &chr(13)& chr(10)) & _
("Mail:")&(objRecordSet.Fields("mail").Value &chr(13)& chr(10)) &chr(13)& chr(10)
'c'est a partir de la que ca ce complique je fait un echo pour tester mais a terme il sera rediriger ver le ldif comme les autresSet userDN = GetObject("LDAP://" & objRecordSet.Fields("distinguishedName").Value)
if not (isnull(userDN.GetEx("othertelephone"))) then
colothertelephone = userDN.GetEx("othertelephone")
wscript.echo(objRecordSet.Fields("displayName").Value)
For each strGroupDN in colothertelephone
'tf.write(strGroupDN &chr(13) &chr(10))
wscript.echo(strGroupDN &chr(13) &chr(10))
Exit For
Next
else
objRecordSet.MoveNext
end if
objRecordSet.MoveNext
end if
loop
wscript.echo("Operation Terminer"&chr(13)& chr(10) &(a)&Chr(32)&("Comptes"))
tf.close
Ce script a pour but d'extraire des objet de l'annuaire ldap de L'active directory ver un serveur openldap en faisant une concordans de champ avec des objet different
C'est a dire que les objet de l'AD ont un nom different de celui de l'open ldap mais ils corespondent aux meme valeurs.
Mon probleme et pour l'objet "OtheTelephone" cette objet peut avoir plusieur valeurs comme aucune donc pour les recuperer je passe par "GetEx" puis une boucle mais le probleme et la si le champs et vide l'objet n'existe pas car il est facultatif donc quand je l'appel il stop le script et me renvoie une erreur....
je suis debutant enVBscript et je ne vois vraiment pas la solution en tous cas merci de m'aider !