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. #21
    Membre éprouvé
    Homme Profil pro
    assistant administratif
    Inscrit en
    août 2017
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : assistant administratif
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : août 2017
    Messages : 488
    Points : 955
    Points
    955
    Par défaut
    Je ne l'utilise plus depuis longtemps mais si tu veux une console tu peux utiliser Powerbatch

    Ok donc la première partie fonctionne.
    Maintenant on va essayer de tester l'autre partie.

    Si tu prends au hasard un des résultats renvoyés par la première partie que tu insères dans cette commande :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    dsget user "résultat de la 1ère partie" -email
    Est-ce que tu obtiens bien un email en sortie ?

  2. #22
    Membre régulier
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 344
    Points : 124
    Points
    124
    Par défaut
    Voila ce que j'ai tenté et le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dsget user "CN=NOMMAJUSCULE\\, Prenom (id_ldap),OU=TRUC,OU=Utilisateurs,DC=DOMAINE,DC=fr" -email
    dsget a échoué*: Le format de la valeur de «*Objet cible pour cette commande*» est incorrect.
    Entrez dsget /? pour afficher l’aide.

  3. #23
    Membre éprouvé
    Homme Profil pro
    assistant administratif
    Inscrit en
    août 2017
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : assistant administratif
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : août 2017
    Messages : 488
    Points : 955
    Points
    955
    Par défaut
    Super on a trouvé l'erreur, reste plus qu'à trouver comment faire marcher cette commande.
    Il faut que tu essaies en modifiant le DN jusqu'à ce que ça fonctionne.

    edit : j'ai trouvé le bon format pour indiquer le DN : "CN=Mike Danseglio,CN=users,dc=ms,dc=tld"
    Il faut juste que j'arrive à transformer la partie gauche du DN puis je reviens vers toi.

  4. #24
    Membre régulier
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 344
    Points : 124
    Points
    124
    Par défaut
    Il faut juste que j'arrive à transformer la partie gauche du DN puis je reviens vers toi.
    MERCI !!!

    Pour info, dans mon cas, j'ai 4 DC (Domain Component) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DC=SOUS-SOUS-DOMAINE,DC=SOUS-DOMAINE,DC=DOMAINE,DC=fr

  5. #25
    Membre éprouvé
    Homme Profil pro
    assistant administratif
    Inscrit en
    août 2017
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : assistant administratif
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : août 2017
    Messages : 488
    Points : 955
    Points
    955
    Par défaut
    J'ai fini de modifier le script, je te laisse procéder au crash test

    Tu peux exécuter le script tel quel, il n'y a rien à modifier :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    @echo off
    setlocal enableextensions enabledelayedexpansion
     
    type nul > C:\groupe.csv
     
    :saisie
    set "groupe="
    echo. & set /p groupe="Veuillez indiquer le nom du groupe à traiter : "
    if not defined groupe (goto :saisie)
     
    for /f "delims=" %%P in ('dsquery group -name "%groupe%" ^| dsget group -members') do call :attributs "%%~P"
     
    echo. & pause
    exit
     
    :attributs
     
    call :conversion %1
    echo. & echo ^>^>^>^>^> Extraction des attributs de !prenom! !nom! en cours ...
    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 "CN=!prenom! !nom!,!OU_domaine!" -%%A') do if not defined valeur (set "valeur=%%E")
    	set "ligne_csv=!ligne_csv!;!valeur!"
     
    )
     
    echo.!ligne_csv:~1!;>> C:\groupe.csv
    goto :eof
     
    :conversion
     
    set "nom="
    set "partie2="
    set "OU_domaine="
    set "prenom="
    set "DN="
     
    for /f "tokens=1,2,* delims=," %%A in (%1) do (
     
    	set "nom=%%A"
    	set "nom=!nom:~3!"
    	set "nom=!nom:\=!"
    	set "partie2=%%B"
    	set "OU_domaine=%%C"
     
    )
     
    for /f "tokens=1 delims=( " %%A in ("!partie2!") do (
     
    	set "prenom=%%A"
    	set "prenom=!prenom: =!"
     
    )
    goto :eof

  6. #26
    Membre régulier
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 344
    Points : 124
    Points
    124
    Par défaut
    Voici le résultat :
    Nom : Capture.PNG
Affichages : 33
Taille : 50,3 Ko
    Remplacer le trait rouge par "Prénom NOM"

    Contenu du CSV (autant de ligne que de membres du groupe) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;

  7. #27
    Membre éprouvé
    Homme Profil pro
    assistant administratif
    Inscrit en
    août 2017
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : assistant administratif
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : août 2017
    Messages : 488
    Points : 955
    Points
    955
    Par défaut
    Ok cette commande va nous faire transpirer jusqu'au bout

    Ca donne quoi si tu essaies manuellement juste la commande DSGET USER :
    dsget user "CN=Prénom NOM,OU=Utilisateurs,DC=SOUS-SOUS-DOMAINE,DC=SOUS-DOMAINE,DC=DOMAINE,DC=fr"

  8. #28
    Membre régulier
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 344
    Points : 124
    Points
    124
    Par défaut
    Désolé pour le délai, comme je te le disais, plein d'autres sujets plus urgents à traiter...

    Ca donne quoi si tu essaies manuellement juste la commande DSGET USER :
    dsget user "CN=Prénom NOM,OU=Utilisateurs,DC=SOUS-SOUS-DOMAINE,DC=SOUS-DOMAINE,DC=DOMAINE,DC=fr"
    Voici la réponse :
    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*» e
    st incorrect.
    Entrez dsget /? pour afficher l'aide.
    Je suis désolé de te faire perdre du temps sur ce problème, d'autant plus que la commande avec CSVDE est quasiment arrivée à répondre à ma demande.
    J'ai contourné l'impossibilité de récupérer les membres du groupe, par un filtrage sur un autre critère qui me donne bien en CSV les personnes dont j'ai besoin.

    Sâchant que l'objectif final est d'écrire un fichier Vcard VCF (https://fr.wikipedia.org/wiki/VCard) de ces contacts, et que ça va pas être si facile pour moi, je me dis que le code que tu as commencé pourrait directement écrire le VCF plutôt que de passer par l'intermédiaire du CSV ?

    Mais peut-être que ce script a déjà été réalisé ? (pas encore trouvé, mais ça m'étonnerait d'être le seul avec ce besoin)

  9. #29
    Membre régulier
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 344
    Points : 124
    Points
    124
    Par défaut
    Pour information, concernant la partie "conversion CSV > VCF", je suis parti sur l'option de le faire via
    - un import en BDD (SQLite) car le SQL est le seul langage que le maitrise (étant en réalité géomaticien )
    - une requête SQL pour convertir les noms des attributs LDAP en champs "Google Contact"
    - un import CSV (avec champs modifiés) dans Google Contacts puis export en VCARD (VCF) via la fonction disponible de Google Contacts

    Bien sûr, il serait plus satisfaisant de le faire directement sans passer par des outils tiers (SQLite et encore plus Google !), mais ça marche bien et c'est "répétable" rapidement pour moi.

    Voici ma requête de conversion, pour info :

    Code SQL : 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
    SELECT 
    displayName as 'Name',
    givenName as 'Given Name',
    sn as 'Family Name',
    personalTitle as 'Name Prefix',
    l as 'Location',
    '* Professionnel' as 'E-mail 1 - Type',
    mail as 'E-mail 1 - Value',
    sAMAccountName as 'IM 1 - Value',
    'Mobile' as 'Phone 1 - Type',
    mobile as 'Phone 1 - Value',
    'Work' as 'Phone 2 - Type',
    telephoneNumber as 'Phone 2 - Value',
    'Professionnel' as 'Address 1 - Type',
    extensionAttribute6 as 'Address 1 - Formatted',
    'Ma Structure' as 'Organization 1 - Name',
    title as 'Organization 1 - Title',
    department as 'Organization 1 - Department'
    FROM csvde_ldap_export

  10. #30
    Membre éprouvé
    Homme Profil pro
    assistant administratif
    Inscrit en
    août 2017
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : assistant administratif
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : août 2017
    Messages : 488
    Points : 955
    Points
    955
    Par défaut
    Bonjour,

    Excellent tu as trouvé une solution, même si ce n'est pas l'idéal.

    Ca n'a pas l'air sorcier de fabriquer un fichier Vcard à partir des informations récupérées dans l'AD, encore faudrait-il que j'arrive à faire fonctionner cette foutue commande.
    J'ai une dernière idée, est-ce que tu pourrais tester ceci :
    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
    26
    27
    28
    29
    30
    31
    @echo off
    setlocal enableextensions enabledelayedexpansion
     
    type nul > C:\groupe.csv
     
    :saisie
    set "groupe="
    echo. & set /p groupe="Veuillez indiquer le nom du groupe à traiter : "
    if not defined groupe (goto :saisie)
     
    for /f "delims=" %%P in ('dsquery group -name "%groupe%" ^| dsget group -members') do call :attributs "%%~P"
     
    echo. & pause
    exit
     
    :attributs
     
    echo. & echo ^>^>^>^>^> Extraction des attributs en cours ...
    echo.
    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 ('echo %1^| dsget user -%%A') do if not defined valeur (set "valeur=%%E")
    	set "ligne_csv=!ligne_csv!;!valeur!"
     
    )
     
    echo.!ligne_csv:~1!;>> C:\groupe.csv
    goto :eof

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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