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 :

Contenu des groupes dans l'AD


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Par défaut Contenu des groupes dans l'AD
    Salut,

    j'essaie de faire un peu de ménage dans mon AD, alors je veux connaitre le contenu des groupes d'une OU, jusque la tout va bien, sauf que mon script ne me ressort que les groupes ayant UN SEUL utilisateur, et je ne comprend pas pourquoi.

    Normalement, il devrait tous me les sortir, avec le nom du groupe, et les utilisateurs a coté, séparés par un ";".

    Voila le code

    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
     
    on error resume next
     
    dim objfichier, Myfile, Ouchoisi
     
    const forReading = 1, ForWriting = 2, ForAppending = 8
     
    'routine de connexion a l'AD
     
    Const ADS_SCOPE_SUBTREE = 2
     
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection
     
    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
     
    'choix du domaine a éxaminer
     
    DomaineChoisi="XXX"			'inputbox ("veuillez Choisir le domaine que vous voulez inspecter","Choix du domaine")
     
    DomaineChoisi2="local"		'inputbox ("veuillez Choisir la fin du nom de domaine que vous voulez inspecter","Choix du domaine")
     
    OuChoisi=inputbox ("veuillez Choisir l'Unité d'organisation que vous voulez inspecter","Choix de l'OU")
     
    'sélection de l'OU dans le domaine
     
    objCommand.CommandText = _
        "SELECT AdsPath FROM 'LDAP://OU="& OuChoisi &", dc="& DomaineChoisi &", dc="& DomaineChoisi2 &"' WHERE objectCategory='group'"
    Set objRecordSet = objCommand.Execute
     
    'création du fichier texte
     
    set objfichier = createobject("scripting.filesystemobject")
     
    NomFichier="test.txt"            '   inputbox ("Veuillez entrez le nom de fichier","Nom du Fichier")
     
    set Myfile = objfichier.opentextfile(NomFichier, ForWriting, true)
     
    'boucle qui vérifie les groupes 1 par 1
     
    objRecordSet.MoveFirst
    Do Until objRecordSet.EOF
        Set objUser = GetObject(objRecordSet.Fields("AdsPath").Value)
     
    	If objUser.member <> "" then
     
    		Myfile.Writeline objUser.sAMAccountName & ";" & objUser.member & ";"
    	End if
     
        objRecordSet.MoveNext
     
    Loop
     
    'message de fin d'éxecution du script
     
    MsgBox "votre recherche dans l'AD est terminée", vbExclamation, "Avertissement"
    J'ai essayé de modifier les valeurs sur lesquels je filtre... et pas mal d'autre trucs, et j'ai toujours seulement les groupes avec un utilisateur.

    Si quelqu'un sait d'ou ca pourrais venir ce serait sympa de m'aider

    merci

  2. #2
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    en fait tu utilises objUser.member , comme s'il n'y avait qu'une valeur unique.

    alors que lorsqu'il y a plusieurs utilisateurs dans ton groupe, le résultat est une collection.

    essaie cà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    objMembers  = objUser.GetEx("member")
    For Each obj in objMembers  
    	if not obj = "" Then
    		Myfile.Writeline obj
    	End If
    ca devrait te donner le principe, après faut adapter en fonction des infos que tu veux remonter...

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Par défaut
    OK, merci ça me permet déjà de cherche dans la bonne direction !!

    et avec ta formule, comment on récupère les différents objets?

    c'est comme ca?

    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
    objRecordSet.MoveFirst
    Do Until objRecordSet.EOF
        Set objUser = GetObject(objRecordSet.Fields("AdsPath").Value)
     
    	If objUser.member <> "" then
     
    		Myfile.Writeline objUser.sAMAccountName & ";"
     
    		objMembers  = objUser.GetEx("member")
    For Each obj in objMembers  
    	if not obj = "" Then
    		Myfile.Writeline obj
    	End If
     
     
    	End if
     
        objRecordSet.MoveNext
     
    Loop
    Par ce que du coup la il considère plus mon script comme valide et le lance plus.

    j'essaie de trouver la bonne syntaxe mais je sais pas si je cherche dans la bonne direction.

    merci pour ton aide en tout cas

  4. #4
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    plutot comme cà en fait :


    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
     
    on error resume next
     
    dim objfichier, Myfile, Ouchoisi
     
    const forReading = 1, ForWriting = 2, ForAppending = 8
     
    'routine de connexion a l'AD
     
    Const ADS_SCOPE_SUBTREE = 2
     
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection
     
    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
     
    'choix du domaine a éxaminer
     
    DomaineChoisi="XXX"			'inputbox ("veuillez Choisir le domaine que vous voulez inspecter","Choix du domaine")
     
    DomaineChoisi2="local"		'inputbox ("veuillez Choisir la fin du nom de domaine que vous voulez inspecter","Choix du domaine")
     
    OuChoisi=inputbox ("veuillez Choisir l'Unité d'organisation que vous voulez inspecter","Choix de l'OU")
     
    'sélection de l'OU dans le domaine
     
    objCommand.CommandText = _
        "SELECT AdsPath FROM 'LDAP://OU="& OuChoisi &", dc="& DomaineChoisi &", dc="& DomaineChoisi2 &"' WHERE objectCategory='group'"
    Set objRecordSet = objCommand.Execute
     
    'création du fichier texte
     
    set objfichier = createobject("scripting.filesystemobject")
     
    NomFichier="test.txt"            '   inputbox ("Veuillez entrez le nom de fichier","Nom du Fichier")
     
    set Myfile = objfichier.opentextfile(NomFichier, ForWriting, true)
     
    'boucle qui vérifie les groupes 1 par 1
     
     
     
     
     
    'MODIFICATIONS
     
    objRecordSet.MoveFirst
    Do Until objRecordSet.EOF
    	Set objUser = GetObject(objRecordSet.Fields("AdsPath").Value)
    	membres = ""
    	objMembers  = objUser.GetEx("member")
    	For Each obj in objMembers  
    		if not obj = "" Then
    			membres = Membres & ";" & obj 
    		End If
    	Next
    	Myfile.Writeline objUser.sAMAccountName & membres
    	objRecordSet.MoveNext	
    Loop
     
    'message de fin d'éxecution du script
     
    MsgBox "votre recherche dans l'AD est terminée", vbExclamation, "Avertissement"

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Par défaut
    C cool merci ca fonctionne

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

Discussions similaires

  1. [AC-2007] Tri personalisé des groupes dans un état
    Par dboul dans le forum IHM
    Réponses: 2
    Dernier message: 14/04/2010, 23h22
  2. [AC-2003] Modifier des groupes dans un état
    Par jneron dans le forum IHM
    Réponses: 2
    Dernier message: 04/10/2009, 19h19
  3. Réponses: 0
    Dernier message: 17/02/2009, 11h16
  4. Exclure contenu des zip dans recherche
    Par ViveLesQuads dans le forum Windows XP
    Réponses: 5
    Dernier message: 09/01/2008, 12h22
  5. compte des groupes dans un etat
    Par moicats dans le forum Access
    Réponses: 2
    Dernier message: 27/04/2006, 12h40

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