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

VBScript Discussion :

Lister utilisateur groupe ad + csv


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 65
    Par défaut Lister utilisateur groupe ad + csv
    Voila, j'ai déja trouvé un script qui faisait tout ce que je voulais c'est à dire, lister les utilisateurs d'un groupe de la AD et l'enregistre dans un fichier csv.

    Mais voila je n'arrive pas à introduire mon domaine (LDAP) dedans en fait je ne sais pas ou la mettre : LDAP://DC=D11130100,DC=cpam-marseille,DC=cnamts,DC=fr

    Voici le script :
    Code : 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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    const FileName = "groupmembers.csv"
     
    groupName = inputbox("Please enter the name of the group:")
     
    if groupName = "" then
    	wscript.quit
    end if
     
    groupPath = getgrouppath(groupName)
     
    if groupPath = "" then
    	wscript.echo "Unable to find the specified group in the domain"
    	wscript.quit
    end if
     
    set objGroup = getobject(grouppath)
    set objFSO = createobject("scripting.filesystemobject")
    set objFile = objFSO.createtextfile(FileName)
    q = """"
     
     
    objFile.WriteLine(q & "sAMAccountName" & q & "," & q & "Surname" & q & "," & q & "FirstName" & q)
    for each objMember in objGroup.Members
    	objFile.WriteLine(q & objmember.samaccountname & q & "," & q & objmember.sn & _
    			q & "," & q & objmember.givenName & q)
    next
     
    '***** Users who's primary group is set to the given group need to be enumerated seperatly.*****
    getprimarygroupmembers groupname
     
    objFile.Close
     
    wscript.echo "Completed"
     
    function getGroupPath(byval GroupName)
    	set cmd=createobject("ADODB.Command")
    	set cn=createobject("ADODB.Connection")
    	set rs=createobject("ADODB.Recordset")
     
    	cn.open "Provider=ADsDSOObject;"
     
    	cmd.commandtext = "SELECT adspath from 'LDAP://" & getnc & _
    			  "' WHERE objectCategory = 'Group' and sAMAccountName = '" & groupname & "'"
    	cmd.activeconnection = cn
     
    	set rs = cmd.execute
     
    	if rs.bof <> true and rs.eof<>true then
    		getgrouppath=rs(0)
    	else
    		getgrouppath = ""
    	end if
    	cn.close
     
    end function
     
    function getNC
    	set objRoot=getobject("LDAP://RootDSE")
    	getNC=objRoot.get("defaultNamingContext")
    end function
     
    function getPrimaryGroupMembers(byval GroupName)
    	set cn = createobject("ADODB.Connection")
    	set cmd = createobject("ADODB.Command")
    	set rs = createobject("ADODB.Recordset")
     
    	cn.open "Provider=ADsDSOObject;"
    	cmd.activeconnection=cn
     
    	'***** Change the Page Size to overcome the 1000 record limitation *****
    	cmd.properties("page size")=1000
    	cmd.commandtext = "SELECT PrimaryGroupToken FROM 'LDAP://" & getnc & _
    			  "' WHERE sAMAccountName = '" & GroupName & "'"
    	set rs = cmd.execute
     
    	if rs.eof<>true and rs.bof<>true then
    		PrimaryGroupID = rs(0)
    	else
    		Err.Raise 5000, "getPrimaryGroupMembers", "Unable to find PrimaryGroupToken property"
    	end if
     
    	cmd.commandtext = "SELECT samaccountname, sn, givenName FROM 'LDAP://" & getNC & _
    			  "' WHERE PrimaryGroupID = '" & PrimaryGroupID & "'"
     
    	set rs = cmd.execute
     
    	while rs.eof<>true and rs.bof<>true
    		objFile.WriteLine(q & rs("samaccountname") & q & "," & q & rs("sn") & q & _
    				  "," & q & rs("givenName") & q)
    		rs.movenext
    	wend
    	cn.close
     
    end function
    Merci pour votre futur aide.

  2. #2
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Bonjour,

    La fonction "getNC" de ton code est censée te renvoyer la chaine LDAP correspondant à ton domaine.
    Rajoute un petit Echo de cette fonction pour le vérifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WScript.Echo "LDAP://" & getNC
    Si cela ne te retourne pas ce que tu cherches, c'est peut-être que ta session n'est pas ouverte sur le bon domaine.

    Attention aussi, le premier appel à la fonction "getNC" dans la fonction "getPrimaryGroupMembers" est tout en minuscule, un mauvais formatage peut parfois jouer des tours...

    Bonne continuation.

  3. #3
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 65
    Par défaut
    Oui en fait c'est assez compliqué, mais la dernière fois tu m'avais aidé à justement me placer sur le bon domaine, en modifiant des petites choses dans le script regarde : http://www.developpez.net/forums/d89...urs-groupe-ad/

    Et bien en gros c'est ce que j'aimerais arriver à faire, sauf que dès que je modifie un truc c'est une série d'erreurs.

  4. #4
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Ah oui c'est vrai, on avait codé le nom de domaine en dur...
    Bon bah si on veut faire pareil, voire si comme cela ça marche mieux :
    Code : 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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    const FileName = "groupmembers.csv"
    const MyDomain = "DC=D11130100,DC=cpam-marseille,DC=cnamts,DC=fr"
     
    groupName = inputbox("Please enter the name of the group:")
     
    if groupName = "" then
    	wscript.quit
    end if
     
    groupPath = getgrouppath(groupName)
     
    if groupPath = "" then
    	wscript.echo "Unable to find the specified group in the domain"
    	wscript.quit
    end if
     
    set objGroup = getobject(grouppath)
    set objFSO = createobject("scripting.filesystemobject")
    set objFile = objFSO.createtextfile(FileName)
    q = """"
     
     
    objFile.WriteLine(q & "sAMAccountName" & q & "," & q & "Surname" & q & "," & q & "FirstName" & q)
    for each objMember in objGroup.Members
    	objFile.WriteLine(q & objmember.samaccountname & q & "," & q & objmember.sn & _
    			q & "," & q & objmember.givenName & q)
    next
     
    '***** Users who's primary group is set to the given group need to be enumerated seperatly.*****
    getprimarygroupmembers groupname
     
    objFile.Close
     
    wscript.echo "Completed"
     
    function getGroupPath(byval GroupName)
    	set cmd=createobject("ADODB.Command")
    	set cn=createobject("ADODB.Connection")
    	set rs=createobject("ADODB.Recordset")
     
    	cn.open "Provider=ADsDSOObject;"
     
    	cmd.commandtext = "SELECT adspath from 'LDAP://" & MyDomain & _
    			  "' WHERE objectCategory = 'Group' and sAMAccountName = '" & groupname & "'"
    	cmd.activeconnection = cn
     
    	set rs = cmd.execute
     
    	if rs.bof <> true and rs.eof<>true then
    		getgrouppath=rs(0)
    	else
    		getgrouppath = ""
    	end if
    	cn.close
     
    end function
     
     
    function getPrimaryGroupMembers(byval GroupName)
    	set cn = createobject("ADODB.Connection")
    	set cmd = createobject("ADODB.Command")
    	set rs = createobject("ADODB.Recordset")
     
    	cn.open "Provider=ADsDSOObject;"
    	cmd.activeconnection=cn
     
    	'***** Change the Page Size to overcome the 1000 record limitation *****
    	cmd.properties("page size")=1000
    	cmd.commandtext = "SELECT PrimaryGroupToken FROM 'LDAP://" & MyDomain & _
    			  "' WHERE sAMAccountName = '" & GroupName & "'"
    	set rs = cmd.execute
     
    	if rs.eof<>true and rs.bof<>true then
    		PrimaryGroupID = rs(0)
    	else
    		Err.Raise 5000, "getPrimaryGroupMembers", "Unable to find PrimaryGroupToken property"
    	end if
     
    	cmd.commandtext = "SELECT samaccountname, sn, givenName FROM 'LDAP://" & MyDomain & _
    			  "' WHERE PrimaryGroupID = '" & PrimaryGroupID & "'"
     
    	set rs = cmd.execute
     
    	while rs.eof<>true and rs.bof<>true
    		objFile.WriteLine(q & rs("samaccountname") & q & "," & q & rs("sn") & q & _
    				  "," & q & rs("givenName") & q)
    		rs.movenext
    	wend
    	cn.close
     
    end function
    En gros, la fonction getNC ne te sert à rien, elle a été supprimée.
    La constante MyDomain contient la chaine LDAP de ton domaine.
    Chaque appel à la fonction getNC a été remplacée par MyDomain.

    Bonne continuation.

  5. #5
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 65
    Par défaut
    Oui c'est vraiment parfait (ne me met pas d'éloge, on a pas codé le nom de domaine en dur, tu a codé le nom de domaine en dur)

    Problème c'est qu'en fait ce script ne marche pas, en fait je voulais répertorier les groupe et les utilisateurs dans un tableau Excel (.csv) il m'affiche : "Completed" mais il n'a pas créé la feuille .csv, j'ai essayé de la créer manuellement, mais elle n'est même pas modifié, une idée ?

  6. #6
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Salut.

    Pour moi il n'y a aucune raison que le fichier ne soit pas créé, surtout si tu n'as pas de message d'erreur. Le fichier "groupmembers.csv" doit se trouver à l'emplacement depuis lequel tu as lancé ton script :
    - soit l'emplacement du script si tu l'as lancé avec un double-clic
    - soit l'emplacement dans lequel tu te trouves si tu l'as lancé avec une fenêtre de commandes.

    Sinon, remplace ta constante FileName comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const FileName = "C:\groupmembers.csv"
    et le fichier se trouvera à la racine de ton C:, donc plus facile à trouver.

    Si ça ne marche toujours pas : vérifier qu'il n'y a pas l'option "On Error Resume Next" au début du script, qui te cacherait les erreurs à corriger

    Bonne continuation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JNDI] lister les groupes d'un utilisateur
    Par mithrendil dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 21/02/2012, 14h43
  2. Lister les groupes d'un utilisateur
    Par Neodarklink dans le forum ASP
    Réponses: 0
    Dernier message: 17/12/2008, 14h21
  3. Lister les groupes d'un utilisateur
    Par filoudesbois dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 07/04/2008, 08h15
  4. WSH en JavaScript : Lister les groupes d'appartenance d'un utilisateur
    Par FlorentBVN dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/12/2007, 16h08

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