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 :

Test si user fait parti d'un groupe


Sujet :

VBScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Test si user fait parti d'un groupe
    Bonjour tous le monde,

    Voila je suis en train de faire un script que je souhaite mettre en tache planifié pour un traitement toutes les nuits. Dans ce script je scan mon AD et je veut chercher pour chaque utilisateur si le mot de passe est expiré ou bien s'il arrive a expiration (cette fonction fonctionne très bien) mais je souhaite affiné cette recherche. En effet mon besoin est de traiter seulement les utilisateur faisant parti d'un groupe, mais je n'ai pas réussi à trouver ou à comprendre comment faire ce test.

    Si quelqu'un peut m'expliquer ou a même une petite solution


    Merci d'avance.

  2. #2
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Je vais essayer d'etre un peu plus clair quand meme, car j'avoue apres relecture ...

    Voila mon traitement :
    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
     For Each oUser In oCont
      Select Case LCase(oUser.Class)
       Case "user"
        i=i+1
    	WhenChange = 0
    	'If oUser
    	ControleMDP = oUser.userAccountControl						' Récuperation des parametres de controle de MDP
    		IF (ControleMDP - 524288 > 0) then						' Le MDP est expiré
    			ChangeMDP = "TRUE"
    			WhenChange = "NOW"
    		Else
    			IF (ControleMDP - 65536 > 0) then					' Le MDP n'expire jamais
    				ChangeMDP = "FALSE"
    			Else												' Le MDP est soumis aux régles de sécurité par defaut
     
    				whenPasswordExpires = DateAdd("d", numDays, oUser.PasswordLastChanged)
    				DateDuJour = date
    				WhenChange = whenPasswordExpires - DateDuJour
    				WhenChange = round(WhenChange,0)
    					If (WhenChange < NbJourAlerte) Then 
    						ChangeMDP = "TRUE"
    					Else
    						ChangeMDP = "FALSE"
    					End IF
    			End IF
    		End IF
     
    	msgbox "Utilisateur : " & oUser.displayName & vbCrLf & "Passord Last Changed : " & oUser.passwordLastChanged & vbCrLf & "Chnagement MDP demandé : " & ChangeMDP & vbCrLf & "nombre de jour WhenChange : " & WhenChange & vbCrLf & "Expiration du mot de passe : " & ChangeMDP
    	Case "organizationalunit", "container"
        VerifMDP oUser
      End Select
    Alors la msgbox pour le moment c'est juste pour vérifié le traitement pour le moment.
    Ce que je voudrait c'est ajouté une condition au depart du traitement, ligne 6, comme cela :
    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
     For Each oUser In oCont
      Select Case LCase(oUser.Class)
       Case "user"
        i=i+1
     
                   '--------------- Si user fait parti du groupe "TOTO" ---------------
     
    	WhenChange = 0
    	'If oUser
    	ControleMDP = oUser.userAccountControl						' Récuperation des parametres de controle de MDP
    		IF (ControleMDP - 524288 > 0) then						' Le MDP est expiré
    			ChangeMDP = "TRUE"
    			WhenChange = "NOW"
    		Else
    			IF (ControleMDP - 65536 > 0) then					' Le MDP n'expire jamais
    				ChangeMDP = "FALSE"
    			Else												' Le MDP est soumis aux régles de sécurité par defaut
     
    				whenPasswordExpires = DateAdd("d", numDays, oUser.PasswordLastChanged)
    				DateDuJour = date
    				WhenChange = whenPasswordExpires - DateDuJour
    				WhenChange = round(WhenChange,0)
    					If (WhenChange < NbJourAlerte) Then 
    						ChangeMDP = "TRUE"
    					Else
    						ChangeMDP = "FALSE"
    					End IF
    			End IF
    		End IF
     
    	msgbox "Utilisateur : " & oUser.displayName & vbCrLf & "Passord Last Changed : " & oUser.passwordLastChanged & vbCrLf & "Chnagement MDP demandé : " & ChangeMDP & vbCrLf & "nombre de jour WhenChange : " & WhenChange & vbCrLf & "Expiration du mot de passe : " & ChangeMDP
    	Case "organizationalunit", "container"
        VerifMDP oUser
      End Select
    Je ne sais pas si cela est plus claire, si je dois apporter des précision je peux tjs le faire.

    Cordialement.

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

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

    Un test qui peut être fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Const STR_GROUP = "TOTO"
    '...
    boolGetUserInfo = False
    For Each strGroupDN In oUser.GetEx(MemberOf)
      If StrComp(GetObject("LDAP://" & strGroupDN & "").cn, STR_GROUP, vbTextCompare) = 0 Then boolGetUserInfo = True
    Next
     
    If boolGetUserInfo Then
      ' Récupération des informations de l'utilisateur
    End If
    C'est ce que tu recherches?

    Bonne continuation

  4. #4
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci bcp pour votre aide.

    Voila comment j'ai intégré votre solution (qui fonctionne d’ailleurs très bien )

    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
    For Each oUser In oCont
      Select Case LCase(oUser.Class)
     
       Case "organizationalunit", "container"
    	msgbox "c est une OU  " & oUser.displayname
        VerifMDP oUser
     
       Case "user"
    	msgbox "c est un user  " & oUser.displayname
        i=i+1
    	WhenChange = 0
     
    	boolGetUserInfo = False
    	For Each strGroupDN In oUser.MemberOf
    		If StrComp(strGroupDN, AccesJuniper, vbTextCompare) = 0 then
    		ControleMDP = oUser.userAccountControl						' Récuperation des parametres de controle de MDP
    			IF (ControleMDP - 524288 > 0) then						' Le MDP est expiré
    			ChangeMDP = "TRUE"
    			WhenChange = "NOW"
    			Else
    				IF (ControleMDP - 65536 > 0) then					' Le MDP n'expire jamais
    				ChangeMDP = "FALSE"
    				Else												' Le MDP est soumis aux régles de sécurité par defaut
     
    				whenPasswordExpires = DateAdd("d", numDays, oUser.PasswordLastChanged)
    				DateDuJour = date
    				WhenChange = whenPasswordExpires - DateDuJour
    				WhenChange = round(WhenChange,0)
    					If (WhenChange < NbJourAlerte) Then 
    						ChangeMDP = "TRUE"
    					Else
    						ChangeMDP = "FALSE"
    					End IF
    				End IF
    			End IF
    			msgbox "Utilisateur : " & oUser.displayName & vbCrLf & "Passord Last Changed : " & oUser.passwordLastChanged & vbCrLf & "Chnagement MDP demandé : " & ChangeMDP & vbCrLf & "nombre de jour WhenChange : " & WhenChange & vbCrLf & "Expiration du mot de passe : " & ChangeMDP
    		End If
     
    	Next
    Cependant, il m'arrive sur quelques comptes d'avoir une erreur "800a01c3 : cet objet n'est pas une collection."
    Ce problème arrive avec quelques comptes utilisateur, mais je ne comprend pas pourquoi ceux la et pas les autres, j'ai regardé au niveau de mon AD en comparant deux comptes ayant les mêmes groupes, le même niveau (utilisateurs du domaine) mais je ne vois aucune différence.

    Je continu mes investigations, mais si quelqu'un a une idée je suis preneur ^^

    Merci encore pour votre aide en tout cas.

    PS : j'ai laisser quelques trace dans mon code, qui m'ont aidé a savoir d'ou venait l'erreur car les premières fois je ne savais pas.

  5. #5
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 299
    Points : 3 554
    Points
    3 554
    Par défaut
    bonjour,

    à quelle ligne apparait cette erreur ?
    si c'est la ligne 14, ça veut dire que la propriété MemberOf est un objet vide et n'est donc pas reconnu comme une collection
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  6. #6
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Oui c'est bien cette ligne qui est en cause, mais j'ai tout bien vérifié ces utilisateurs ont bien des groupes dans "membre de".

    Je ne comprend vraiment pas pourquoi.

  7. #7
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 299
    Points : 3 554
    Points
    3 554
    Par défaut
    la réponse ici je pense...
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/10/2014, 22h15
  2. [XL-2003] Test si cellule fait partie d'un champ
    Par MarcelG dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/12/2009, 17h22
  3. Réponses: 8
    Dernier message: 20/08/2009, 17h58
  4. Réponses: 4
    Dernier message: 03/08/2007, 09h32
  5. Tester si une String fait partie d'un tableau de String
    Par laloi dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 23/04/2005, 16h47

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