IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

dsquery group avec attributs [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut dsquery group avec attributs
    Bonjour à tous,

    Je souhaite exporter la liste des membres d'un groupe AD.
    Je viens d'y parvenir avec cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dsquery group -name "groupname" | dsget group -members > C:\memberlist.txt
    Voici le contenu de mon memberlist.txt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "CN=NOM1\, Prénom1 (identifiant1),OU=GRP01,OU=Utilisateurs,DC=DOMAINE,DC=fr"
    "CN=NOM2\, Prénom2 (identifiant2),OU=GRP01,OU=Utilisateurs,DC=DOMAINE,DC=fr"
    Mais j'aimerais avoir tous les attributs des membres (e-mail, téléphone, ...), avec pour objectif ultime de créer des vcard pour import dans répertoire téléphonique.

    Est-il possible d'ajouter des attributs à l'export des membres d'un groupe AD ?

    Merci pour vos conseils et votre indulgence !

    Sylvain M.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Bonjour,

    Je n'ai pas testé mais voilà comment je vois les choses :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    dsget group "groupname" -members | dsget user -dn -samid -sid -upn -fn -mi -ln -display -empid -desc -office -tel -email -hometel -pager -mobile -fax -iptel -webpg -title -dept -company -mgr -hmdir -hmdrv -profile -loscr -mustchpwd -canchpwd -pwdneverexpires -disabled -acctexpires -reversiblepwd > C:\memberlist.txt

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    Merci pour ton aide, Barnabe

    Malheureusement, voici la réponse que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dsget a échoué*: Le format de la valeur de «*Objet cible pour cette commande*» est incorrect.
    Entrez dsget /? pour afficher l’aide.dsget a échoué*: «*Objet cible pour cette commande*» est manquant.
    Entrez dsget /? pour afficher l’aide.
    Je continue de chercher, mais tu verras peut-être plus vite que moi le pb et/ou la solution

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    C'est bon : je viens de trouver !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dsquery group -name "groupname" | dsget group -members | dsget user -dn -samid -sid -upn -fn -mi -ln -display -empid -desc -office -tel -email -hometel -pager -mobile -fax -iptel -webpg -title -dept -company -mgr -hmdir -hmdrv -profile -loscr -mustchpwd -canchpwd -pwdneverexpires -disabled -acctexpires -reversiblepwd > C:\memberlist.txt
    Il suffisait d’enchaîner les deux !

    MERCI !!!

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Ok super ! N'oublie pas de passer le sujet en "résolu"

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    N'oublie pas de passer le sujet en "résolu"
    C'est fait !

    Mais je me permets quand même une petite question "bonus" : le résultat de l'export est en texte, sans délimiteurs (CSV avec séparateur ; ou TAB).
    Est-ce possible de passer le résultat avec un séparateur ?

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Non je ne vois pas d'option pour le faire.

    Si tu me donnes quelques lignes de ton fichier je peux peut-être trouver une solution.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    OK, je te l'envoie en MP.
    Merci à toi

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    J'ai peut-être trouvé une solution via l'utilitaire nommé CSVDE, je te laisse tester : https://serverfault.com/questions/43...miliar-with-ds

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par barnabe0057
    J'ai peut-être trouvé une solution via l'utilitaire nommé CSVDE
    Merci !
    C'est vrai que ça a l'air bien plus efficace pour mon besoin.

    Par contre, j'ai bien réussi à filtrer par un attribut (-r "(&(objectClass=user)(title=Titre*))" ), mais pas à récupérer les membres d'un groupe comme je le faisais avec dsquery/dsget (dsget group -members)

    Si tu as une idée ?

  11. #11
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Non je n'ai pas d'idée.

    Pour en revenir à dsquery / dsget j'ai pensé à une méthode "bourrin" qui consiste à récupérer chaque attribut séparément puis à construire ton propre .csv

    Dans cette optique j'ai concocté ce script, mais je ne peux pas le tester donc je compte sur toi pour les retours d'infos :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    @echo off
    setlocal enableextensions enabledelayedexpansion
     
    type nul > C:\groupe.csv
     
    for f "delims=" %%P in ('dsquery group -name "nom_groupe" ^| dsget group -members') do call :attributs "%%~P"
     
    pause
    exit
     
    :attributs
     
    set "ligne_csv="
     
    for %%A in (dn samid sid fn mi ln display empid desc office tel email hometel pager mobile title dept company) do (
     
    	set "valeur="
    	for f "skip=1 delims=" %%E in ('dsget user "%~1" -%%A') do if not defined valeur (set "valeur=%%E")
    	set "ligne_csv=!ligne_csv!;!valeur!"
     
    )
     
    echo.!ligne_csv:~1!;>> C:\groupe.csv
     
    goto :eof

    N'oublie pas de modifier le nom du groupe dans le premier FOR.

    Je ne m'attends pas à ce que ça fonctionne parfaitement du premier coup, mais si on s'y met à 2 on va vite arriver au résultat attendu.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    Merci Barnabe !

    Malheureusement, le fichier C:\groupe.csv est bien créé, mais vide...
    Et comme je ne vois pas ce qui se passe, je ne sais pas trop pourquoi...

    Si je veux voir le déroulé, je peux enlever @echo off, c'est bien ça ?

    PS. : j'ai tenté, mais je ne vois toujours pas le déroulé des opérations quand je l’exécute (depuis un .BAT).

  13. #13
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Ok on va déjà tester la première partie :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @echo off
    setlocal enableextensions enabledelayedexpansion
     
    type nul > C:\groupe.csv
     
    for f "delims=" %%P in ('dsquery group -name "nom_groupe" ^| dsget group -members') do echo call :attributs "%%~P"
     
    pause
    exit

    Qu'obtiens-tu comme sortie ? Répond en MP si c'est confidentiel.

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    Qu'obtiens-tu comme sortie ?
    Rien de confidentiel... puisque le fichier "groupe.csv" est vide (0Ko)...

  15. #15
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Ah excuse-moi je voulais dire qu'obtiens-tu dans la console. Pas dans le fichier.

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    Ne te moque pas de moi ...
    Je ne sais pas comment récupérer le contenu de la console : j'execute le BAT, mais directement depuis l'explorateur...
    Pour avoir la console, tu me conseilles quel utilitaire(s) ?

  17. #17
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Je n'oserais pas

    Tu le lances depuis l'explorateur, c'est parfait.

    Vu que j'ai mis une commande PAUSE à la fin du script, normalement la fenêtre noire devrait rester ouverte, ce n'est pas le cas ?

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    Bonjour Barnabé, et désolé pour le délai de réponse (d'ailleurs, ne t'en étonne pas par la suite, je suis sur plein d'autres sujets en même temps !)

    Vu que j'ai mis une commande PAUSE à la fin du script, normalement la fenêtre noire devrait rester ouverte, ce n'est pas le cas ?
    Etrangement, en effet, ce n'est pas le cas !?

    J'ai supprimé le exit de la fin, mais idem, la fenêtre DOS se ferme, le fichier est créé, mais vide...


  19. #19
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Bonjour, je viens de repérer une faute de frappe qui explique pourquoi la fenêtre ne reste pas ouverte, voilà la correction :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    @echo off
    setlocal enableextensions enabledelayedexpansion
     
    type nul > C:\groupe.csv
     
    for /f "delims=" %%P in ('dsquery group -name "nom_groupe" ^| dsget group -members') do call :attributs "%%~P"
     
    pause
    exit
     
    :attributs
     
    set "ligne_csv="
     
    for %%A in (dn samid sid fn mi ln display empid desc office tel email hometel pager mobile title dept company) do (
     
    	set "valeur="
    	for /f "skip=1 delims=" %%E in ('dsget user "%~1" -%%A') do if not defined valeur (set "valeur=%%E")
    	set "ligne_csv=!ligne_csv!;!valeur!"
     
    )
     
    echo.!ligne_csv:~1!;>> C:\groupe.csv
     
    goto :eof

    N'oublie pas de modifier le nom du groupe dans le premier FOR.



    Si tu n'obtiens toujours rien, il faudra tester la première partie pour commencer :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @echo off
    setlocal enableextensions enabledelayedexpansion
     
    type nul > C:\groupe.csv
     
    for /f "delims=" %%P in ('dsquery group -name "nom_groupe" ^| dsget group -members') do echo %%P
     
    pause
    exit

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 132
    Points
    132
    Par défaut
    Je viens de tester les 2 codes.
    Le 1er créé le fichier CSV vide, et reste bloqué sur un écran noir.
    Le 2nd affiche les membres dans la fenêtre DOS (tous les DN du groupe), créé le fichier CSV, mais vide lui aussi.
    Merci pour ton aide, mais de mon côté je ne peux pas vraiment identifier le PB.
    Tu as des conseils sur une console pour exécuter les BAT ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Pb avec attribut static
    Par likenoother dans le forum C++
    Réponses: 3
    Dernier message: 24/08/2006, 12h54
  2. probleme d'edition groupe avec quickreport
    Par daylight dans le forum Bases de données
    Réponses: 1
    Dernier message: 18/08/2006, 12h36
  3. Envoi de formulaire avec attribution de valeur
    Par nicovoa dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/08/2006, 18h22
  4. Créer un groupe avec mot de passe
    Par amigauss dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 03/04/2006, 12h10
  5. [MFC]Probleme avec attributs d'une LOGFONT
    Par Fildz dans le forum MFC
    Réponses: 3
    Dernier message: 08/01/2006, 17h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo