locked
[Windows Server 2003 R2] Probleme modification AD RRS feed

  • Question

  • Bonjour,

    Je souhaite modifier les utilisateurs de l'annuaire AD et Exchange de mon entreprise. J'ai dans un premier temps creer un csv qui reprend tous les utilisateurs (avec les modifiactions). Puis j'ai crée un "programme" en BASH afin de pouvoir modifier mes utilisateurs. Mais le soucis c'est que lorsque je lance le BASH rien ne se passe. La je comprend pas. Voici le programme:

    for /F "delims =/"%%a in ($C:\Documents and Settings\FMAIND15\Bureau\test2.csv)
    do
    {
     dsquery dsmod -username %%b, -title %%d, -department %%e, -company %%f, -office %%g , -tel %%h, -mobile %%i, -faxe %%j, -mail %%k
     
     sleep (100)
    }

    Merci par avance

    mercredi 27 juillet 2011 12:02

Réponses

  • Bonjour,

    Plusieurs petites choses :

    • si c'est du batch, alors ce ne sont pas des { } mais des () qu'il faut utiliser
    • je mettrais bien : for /f "tokens=* delims=;" %%a in ('more C:\Documents and Settings\FMAIND15\Bureau\test2.csv') do (
    • dsquery dsmod ne peut pas fonctionner. dsmod tout seul permettra de faire votre modification. Il faut de plus préciser le type d'objet, donc faire dsmod user
    • L'option -username n'existe pas je crois. Que souhaitez vous faire avec cette option?

    Olivier Detilleux - Service Line Manager | Core Infrastructure Department - vNext http://www.vnext.fr - http://myitforum.com/cs2/blogs/forefrontsecurity/
    • Marqué comme réponse Reiiji mercredi 27 juillet 2011 14:03
    mercredi 27 juillet 2011 12:33
  • Bonjour,

    L'idéal serait que tu ais dans ton fichier CSV le distinguishedname (DN) de l'utilisateur, ce qui permettrait de lancer la commande :

    dsmod user "cn=toto,dc=domain,dc=corp" -dept "departementTOTO" -company "CompanyTOTO"

    J'ai mis delims=; car je suppose que ton séparateur dans ton fichier csv est le ;


    Olivier Detilleux - Service Line Manager | Core Infrastructure Department - vNext http://www.vnext.fr - http://myitforum.com/cs2/blogs/forefrontsecurity/
    • Marqué comme réponse Reiiji mercredi 27 juillet 2011 13:57
    mercredi 27 juillet 2011 12:54
  • Voici une description du DN pour un annuaire LDAP : http://msdn.microsoft.com/en-us/library/aa366101(VS.85).aspx

    Si tu veux connaitre le DN de ton utilisateur toto, utilise la commande suivante : dsquery user -name *toto*


    Olivier Detilleux - Service Line Manager | Core Infrastructure Department - vNext http://www.vnext.fr - http://myitforum.com/cs2/blogs/forefrontsecurity/
    • Marqué comme réponse Reiiji mercredi 27 juillet 2011 13:57
    mercredi 27 juillet 2011 13:33
  • Il faut installer les support tools 2003 sur ton PC si c'est un Windows XP : http://www.microsoft.com/download/en/details.aspx?id=18546

    Sinon, les RSAT si c'est un Windows 7 : http://www.microsoft.com/download/en/details.aspx?id=7887


    Olivier Detilleux - Service Line Manager | Core Infrastructure Department - vNext http://www.vnext.fr - http://myitforum.com/cs2/blogs/forefrontsecurity/
    • Marqué comme réponse Reiiji jeudi 28 juillet 2011 08:39
    jeudi 28 juillet 2011 08:24

Toutes les réponses

  • Bonjour,

    Plusieurs petites choses :

    • si c'est du batch, alors ce ne sont pas des { } mais des () qu'il faut utiliser
    • je mettrais bien : for /f "tokens=* delims=;" %%a in ('more C:\Documents and Settings\FMAIND15\Bureau\test2.csv') do (
    • dsquery dsmod ne peut pas fonctionner. dsmod tout seul permettra de faire votre modification. Il faut de plus préciser le type d'objet, donc faire dsmod user
    • L'option -username n'existe pas je crois. Que souhaitez vous faire avec cette option?

    Olivier Detilleux - Service Line Manager | Core Infrastructure Department - vNext http://www.vnext.fr - http://myitforum.com/cs2/blogs/forefrontsecurity/
    • Marqué comme réponse Reiiji mercredi 27 juillet 2011 14:03
    mercredi 27 juillet 2011 12:33
  • Bonjour Olivier,

    dans premier temps merci pour ta reponse, j'ai pu modifier la premiere partie de mon code.

    Avec username, je pensais pourvoir modifier l'ensemble du compte des utilisateurs qui se trouve dans l'AD.

    Ex: j'ai un utilisateur toto dans l'ad avec comme fonction : inconnu, company TUTU etc...

    avec mon csv je voudrais modifier sa fonction et sa company.

    mercredi 27 juillet 2011 12:45
  • Bonjour,

    L'idéal serait que tu ais dans ton fichier CSV le distinguishedname (DN) de l'utilisateur, ce qui permettrait de lancer la commande :

    dsmod user "cn=toto,dc=domain,dc=corp" -dept "departementTOTO" -company "CompanyTOTO"

    J'ai mis delims=; car je suppose que ton séparateur dans ton fichier csv est le ;


    Olivier Detilleux - Service Line Manager | Core Infrastructure Department - vNext http://www.vnext.fr - http://myitforum.com/cs2/blogs/forefrontsecurity/
    • Marqué comme réponse Reiiji mercredi 27 juillet 2011 13:57
    mercredi 27 juillet 2011 12:54
  • Bonjour,

    Pour le delims, effectivement j'ai utilisé ';' comme separateur.

    Pour le distinguishedname tu entends par le nom de famille complet des utilisateurs ou l'abreviation?

    J'entends pas nom complet (toujours avec mon exemple de Toto) si toto à pour nom de famille test

    je mettrai dans mon csv sous la ligne distinguishedname Test ou l'abreviation ttest1 (car dans mon entreprise on met la premiere lettre du prenom, plus les 5 premiere lettres du nom de famille).

    Désoler pour ses questions basic mais j'utilise pour la premiere fois un AD. Donc je ne suis pas encore habituer au abreviation AD :s

    mercredi 27 juillet 2011 13:02
  • Voici une description du DN pour un annuaire LDAP : http://msdn.microsoft.com/en-us/library/aa366101(VS.85).aspx

    Si tu veux connaitre le DN de ton utilisateur toto, utilise la commande suivante : dsquery user -name *toto*


    Olivier Detilleux - Service Line Manager | Core Infrastructure Department - vNext http://www.vnext.fr - http://myitforum.com/cs2/blogs/forefrontsecurity/
    • Marqué comme réponse Reiiji mercredi 27 juillet 2011 13:57
    mercredi 27 juillet 2011 13:33
  • Viens de tester le programme sur le pc/serveur de l'AD. Cela fonctionnement parfaitement merci Olivier.

    Mais j'ai une derniere question, je voulais savoir comment utiliser ce programme à distance sans passer directement par l'AD. Mais j'ai testé la commande dsquery sur mon pc et cette derniere n'est pas reconnu.

    jeudi 28 juillet 2011 07:54
  • Il faut installer les support tools 2003 sur ton PC si c'est un Windows XP : http://www.microsoft.com/download/en/details.aspx?id=18546

    Sinon, les RSAT si c'est un Windows 7 : http://www.microsoft.com/download/en/details.aspx?id=7887


    Olivier Detilleux - Service Line Manager | Core Infrastructure Department - vNext http://www.vnext.fr - http://myitforum.com/cs2/blogs/forefrontsecurity/
    • Marqué comme réponse Reiiji jeudi 28 juillet 2011 08:39
    jeudi 28 juillet 2011 08:24
  • Merci Olivier pour ton aide. C'est bien ca qu'il me manquait sur mon pc.

    Bonne journée

    jeudi 28 juillet 2011 08:40
  • Bonjour Olivier,

    ce post est bien utile. Mais voila il ne veut pas fonctionner chez moi. :) En effet, je voudrais modifier l'attribut "employeeID" pour les utilisateurs d'une OU. Mais ça ne fonctionne pas. j'ai pourtant adapter ta méthode comme ceci:

     

    for /f "tokens=* delims=;" %%a in ('more c:\script\employeeid.csv') do (dsmod user &&a -empid %%b

     

    voila j'avoue avoir le nez dedans depuis ce matin et ne plus avoir les yeux en face des trous alors une petite aide de ta part ne serais pas de trop. sauf si tu es en vacances et dans ce cas. Bonne vacances. :)

    Olivier

    vendredi 5 août 2011 15:07
  • Hello,

    Dans ton cas, je pencherai sur une solution du type :

    for /f "tokens=1,2 delims=;" %%a in ('more c:\script\employeeid.csv') do (dsmod user &&a -empid %%b)

    à mettre dans un fichier truc.bat. Si tu le lances directement depuis ta ligne de commande, il ne faut mettre qu'un seul % (%a et %b au lieu de %%a et %%b)

     


    Olivier Detilleux - Service Line Manager | Core Infrastructure Department - vNext http://www.vnext.fr - http://myitforum.com/cs2/blogs/forefrontsecurity/
    vendredi 5 août 2011 15:21
  • Bonjour et merci pour ta reponse rapide.

    donc j'ai testé ce matin, et malheuresement ça ne fonctionne pas. Quand je lance le batch j'ai le message suivant: "dsmod failed:You must specify at least one attribute to be modified." Le batch ressemble a ça "for /f "tokens=1,2 delims=;" %%a in ('more c:\script\employeeid.csv') do (dsmod user &&a -empid %%b)" et le csv a ceci: "CN=toto,OU=users,dc=fr,DC=monsite,DC=com";0000

    En fait ce que je voudrais faire est d'injecter le Matricule unique a chaque utilisateurs faisant partis ce conteneur. Encore désolé de te soliciter j'ai pourtant cherché sur le net mais je comprends rien. peut etre dois je preciser que l'attribut "employeeID" n'est pas natif dans AD et que j'ai donc du l'ajouter dans la class "person".

    Olivier

    lundi 8 août 2011 08:24
  • Re,ça y est ça fonctionne en fait en relisant le batch je me suis aperçu que j'avais mis des && a la place de %%. Comme quoi des fois quand tu as le nez dedans tu ne vois pas forcement les erreurs. :)

    En tout cas merci encore pour ton aide.

    A+

    Olivier

    lundi 8 août 2011 09:13