Meilleur auteur de réponses
script changement d'attribut sur plusieurs utilisateur AD

Question
-
Bonjour,
Je cherche un script pour mettre à jour le champ : Company de tout mes utilisateurs présent dans l'AD.
Quelque un a une solution ?
Merci et bonne journée
JB- Modifié samzor vendredi 20 février 2009 11:11
- Déplacé swapnilpBanned jeudi 4 février 2010 00:57 Forum Consolidation (Origine :Windows Server 2003 – Services d’Annuaire)
lundi 16 février 2009 11:17
Réponses
-
Tiens tu sais si il serait possible de mettre dans le champ " Office " le nom de l'ou parente à celle ou il se trouve ?
Style : ou Direction et Finance -> 2230 - Bureau du personnel -> Utilisateur.
Et moi je voudrais que dans l'attribut " Office " de l'utilisateur le script mette " Direction et Finance ".
Personne pour m'aider ?
Bon je me suis débrouillé tout seul.
Je poste le script pour d'autre si jamais =)
dim accent,sansAccent,st_email,office set oCommand=createObject("ADODB.command") set oConnection=createObject("ADODB.connection") accent = " ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç" sansAccent = "-AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc" oConnection.provider="ADsDSOObject" oConnection.open"Active Directory Provider" oCommand.activeConnection=oConnection set oRootDse=getObject("LDAP://RootDSE") sBase="<LDAP://"&oRootDse.get("defaultNamingContext")&">;" sFilter="(&(objectClass=user)(objectCategory=person));" sAttributes="ADsPath;" sScope="subtree" sQuery=sBase&sFilter&sAttributes&sScope oCommand.commandText = sQuery oCommand.properties("Page Size")=100 oCommand.properties("Timeout")=30 oCommand.properties("Cache Results")=false set oRecordSet=oCommand.execute do until oRecordSet.eOF sADsPath=oRecordSet.fields("ADsPath") set oUser=getObject(sADsPath) st_email = lcase(oUser.givenName) &"." & lcase(oUser.sn) & "@company.com" for i=0 to len(accent) step 1 st_email =Replace(st_email,right(left(accent,i),1),right(left(sansAccent,i),1)) next oUser.put "mail", st_email oUser.setinfo() userDName = oUser.distinguishedName partie = split(UserDName,",") OU = Right(partie(1),Len(partie(1))-3) oUser.put "department", OU if (left(partie(2),2)="OU") then office = Right(partie(2),Len(partie(2))-3) else office = Right(partie(1),Len(partie(1))-3) end if oUser.put "PhysicalDeliveryOfficeName", office oUser.setinfo() oRecordSet.moveNext loop oConnection.close - Marqué comme réponse samzor lundi 23 février 2009 09:44
vendredi 20 février 2009 10:00
Toutes les réponses
-
Bonjour,
si tu es dans un AD 2003, tu as la possibilité de sélectionner tous les comptes utilisateurs de ton choix et faire un clique droit/Propriétés pour modifier les attributs affichés en une seule opération.
Autrement, tu as l'outil admodify.net : http://www.codeplex.com/admodify (c'est un outil graphique)
Ou bien encore admod (ligne de commande)
Ou bien encore via ldifde ou csvde + fichier CSV à générer.
Bon j'arrête là :D
Freddy ELMALEH aka "bigstyle" -- Consultant Freelance pour Active IT -- MVP Windows Server - Directory Services- Marqué comme réponse samzor lundi 16 février 2009 12:09
- Non marqué comme réponse samzor lundi 16 février 2009 12:19
- Marqué comme réponse samzor lundi 16 février 2009 12:19
- Non marqué comme réponse samzor lundi 16 février 2009 12:25
- Proposé comme réponse Thierry DEMAN-BARCELÒMVP lundi 16 février 2009 22:02
lundi 16 février 2009 11:48 -
-
Je t'en prie, content de t'avoir aidé.
Tu peux indiquer mon post précédent en tant que "réponse" afin que le forum y gagne en lisibilité s'il te plait ?
Merci et bonne journée
Freddy ELMALEH aka "bigstyle" -- Consultant Freelance pour Active IT -- MVP Windows Server - Directory Serviceslundi 16 février 2009 12:02 -
Ah ben tiens pendant que je t'ai sous la main :D
Tu as pas un script pour créé un email en prenant le nom.prenom@company.com.
Et qu'il me parse ça sur l'entier de l'AD ?
Je sais j'abuse xD
lundi 16 février 2009 12:10 -
Tu peux passer par une stratégie de destinataire au niveau de ton exchange du type
%s.%g@societe.com
%g : given name (Prénom)
%s : le "Surname" qui correspond au "last name" ou nom de famille si tu préfères ;)
@+
Freddy ELMALEH aka "bigstyle" -- Consultant Freelance pour Active IT -- MVP Windows Server - Directory Serviceslundi 16 février 2009 13:34 -
ok pour moi
Freddy ELMALEH aka "bigstyle" -- Consultant Freelance pour Active IT -- MVP Windows Server - Directory Serviceslundi 16 février 2009 22:19 -
Salut =)
Hmm j'ai essayé et quand je met %s.%g@societe.com il me met %s.%g.@societe.com dans l'email.
As-tu une idée ?
Merci de l'info xDmercredi 18 février 2009 07:32 -
Bon ben j'ai fait autrement. J'ai demandé à un développeur de ma boîte de me coder le script qui prend le nom.prenom@société.com.
Je peux diffuser le source si quelque un en a besoin.
Bonne journée
JB
mercredi 18 février 2009 09:45 -
Bonjour,
tu veux dire quelque chose comme ça ;)
1 set oCommand=createObject("ADODB.command") 2 set oConnection=createObject("ADODB.connection") 3 4 oConnection.provider="ADsDSOObject" 5 oConnection.open"Active Directory Provider" 6 oCommand.activeConnection=oConnection 7 set oRootDse=getObject("LDAP://RootDSE") 8 sBase="<LDAP://"&oRootDse.get("defaultNamingContext")&">;" 9 sFilter="(&(objectClass=user)(objectCategory=person));" 10 sAttributes="ADsPath;" 11 sScope="subtree" 12 sQuery=sBase&sFilter&sAttributes&sScope 13 oCommand.commandText = sQuery 14 15 oCommand.properties("Page Size")=100 16 17 oCommand.properties("Timeout")=30 18 19 oCommand.properties("Cache Results")=false 20 21 set oRecordSet=oCommand.execute 22 23 do until oRecordSet.eOF 24 25 sADsPath=oRecordSet.fields("ADsPath") 26 27 set oUser=getObject(sADsPath) 28 29 oUser.put "mail", oUser.givenName &"." & oUser.sn & "@compagnie.com" 30 oUser.setinfo() 31 32 oRecordSet.moveNext 33 34 loop 35 36 oConnection.close
Joëlmercredi 18 février 2009 10:09 -
Ah parfait. Ben tiens, tant que tu es sur cette lancée, c'est possible de me faire un script qui mettrait le nom de l'ou ou se trouve l'utilisateur dans le champ" service " dans l'onglet organisation .
PS : Mes OU ont des parenthèses des accents et des tirets .
Merci =)mercredi 18 février 2009 11:45 -
Concernant ma proposition j'ai modifié mon post et elle est possible via une stratégie de destinataires dans ton Exchange
Freddy ELMALEH aka "bigstyle" -- Consultant Freelance pour Active IT -- MVP Windows Server - Directory Servicesmercredi 18 février 2009 13:19 -
Tu peux dans la boucle récuperer la chaine distinguishedName et récuperer l'OU parente (c'est assez élegant mais ça dépanne) :
serDName = oUser.distinguishedName partie = split(UserDName,",") OU = Right(partie(1),Len(partie(1))-3) oUser.put "company", OU oUser.setinfo()
Joëlmercredi 18 février 2009 14:31 -
set oCommand=createObject("ADODB.command") set oConnection=createObject("ADODB.connection") oConnection.provider="ADsDSOObject" oConnection.open"Active Directory Provider" oCommand.activeConnection=oConnection set oRootDse=getObject("LDAP://RootDSE") sBase="<LDAP://"&oRootDse.get("defaultNamingContext")&">;" sFilter="(&(objectClass=user)(objectCategory=person));" sAttributes="ADsPath;" sScope="subtree" sQuery=sBase&sFilter&sAttributes&sScope oCommand.commandText = sQuery oCommand.properties("Page Size")=100 oCommand.properties("Timeout")=30 oCommand.properties("Cache Results")=false set oRecordSet=oCommand.execute do until oRecordSet.eOF sADsPath=oRecordSet.fields("ADsPath") set oUser=getObject(sADsPath) serDName = oUser.distinguishedName partie = split(UserDName,",") OU = Right(partie(1),Len(partie(1))-3) oUser.put "department", OU oUser.setinfo() oRecordSet.moveNext loop oConnection.close
Ca ressemble à ça ?
Oulà, je suis pas du tout developpeur... Je comprends pas grand chose.
Peux-tu me pondre le script ?
J'avoue que j'ai de la peine dans le scripting.
Merci
jeudi 19 février 2009 07:20 -
Bon ben je suis définitivement nul en scripting xD
ça ne fonctionne pas j'ai une erreur.
"indice en dehors de la plage '[number: 1]'
Helllllp les guru coderz =)- Modifié samzor jeudi 19 février 2009 10:38
jeudi 19 février 2009 10:22 -
Salut,
il y a une coquille dans mon texte, voici le bon :
userDName = oUser.distinguishedName partie = split(UserDName,",") OU = Right(partie(1),Len(partie(1))-3) oUser.put "company", OU oUser.setinfo()
Joël- Proposé comme réponse Joel de amorin vendredi 20 février 2009 07:54
- Marqué comme réponse samzor vendredi 20 février 2009 08:38
- Non marqué comme réponse samzor lundi 23 février 2009 07:35
jeudi 19 février 2009 10:35 -
T'es un dieu =) merci tout fonctionne.
Encore merci !!jeudi 19 février 2009 10:42 -
Bonjour,
content d'avoir pu t'aider. Tu peux indiquer ton post comme résolu.
A+
Joëlvendredi 20 février 2009 07:53 -
Tiens encore un truc, ton script construit les emails en prenant les accents dans l'email...
Peux-tu faire en sorte que l'email soit en minuscule ?
Mercivendredi 20 février 2009 09:01 -
-
Tiens tu sais si il serait possible de mettre dans le champ " Office " le nom de l'ou parente à celle ou il se trouve ?
Style : ou Direction et Finance -> 2230 - Bureau du personnel -> Utilisateur.
Et moi je voudrais que dans l'attribut " Office " de l'utilisateur le script mette " Direction et Finance ".
Personne pour m'aider ?
Bon je me suis débrouillé tout seul.
Je poste le script pour d'autre si jamais =)
dim accent,sansAccent,st_email,office set oCommand=createObject("ADODB.command") set oConnection=createObject("ADODB.connection") accent = " ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç" sansAccent = "-AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc" oConnection.provider="ADsDSOObject" oConnection.open"Active Directory Provider" oCommand.activeConnection=oConnection set oRootDse=getObject("LDAP://RootDSE") sBase="<LDAP://"&oRootDse.get("defaultNamingContext")&">;" sFilter="(&(objectClass=user)(objectCategory=person));" sAttributes="ADsPath;" sScope="subtree" sQuery=sBase&sFilter&sAttributes&sScope oCommand.commandText = sQuery oCommand.properties("Page Size")=100 oCommand.properties("Timeout")=30 oCommand.properties("Cache Results")=false set oRecordSet=oCommand.execute do until oRecordSet.eOF sADsPath=oRecordSet.fields("ADsPath") set oUser=getObject(sADsPath) st_email = lcase(oUser.givenName) &"." & lcase(oUser.sn) & "@company.com" for i=0 to len(accent) step 1 st_email =Replace(st_email,right(left(accent,i),1),right(left(sansAccent,i),1)) next oUser.put "mail", st_email oUser.setinfo() userDName = oUser.distinguishedName partie = split(UserDName,",") OU = Right(partie(1),Len(partie(1))-3) oUser.put "department", OU if (left(partie(2),2)="OU") then office = Right(partie(2),Len(partie(2))-3) else office = Right(partie(1),Len(partie(1))-3) end if oUser.put "PhysicalDeliveryOfficeName", office oUser.setinfo() oRecordSet.moveNext loop oConnection.close - Marqué comme réponse samzor lundi 23 février 2009 09:44
vendredi 20 février 2009 10:00