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 :

[VBS] recherche OU d'un utilisateur dans Active directory


Sujet :

VBScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 64
    Points : 33
    Points
    33
    Par défaut [VBS] recherche OU d'un utilisateur dans Active directory
    Bonjour,

    J'ai effectué plusieurs tests et différentes recherches mais ils n'ont rien donné!

    Dans un autre script j'affiche les groupes de l'utilisateur connecté sur la machine ça marche mais quand il s'agit d'un utilisateur saisie aprés ça ne marche pas.

    utilisateur connecté sur la machine

    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
      Set ADSysInfo = CreateObject("ADSystemInfo")
      Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)
      strGroups = LCase(Join(CurrentUser.MemberOf))
      Mesgroupes = Replace(strGroups," ",",") 
      MesGroupes = Split(MesGroupes,",")
      nb = UBound(MesGroupes)
      GroupeOK = ""
     
      For n = 0 to nb
     
    	If left(MesGroupes(n),3) = "cn=" then
     
                         GroupeOK = right(MesGroupes(n),Len(Mesgroupes(n))-3)
                         wscript.echo"GroupeOk = " & GroupeOK
     
    	end if
     
      Next
    Ce code m'affiche bien les groupes!

    utilisateur saisie

    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
      MonCompte = "COETAMAN"
     
     'Set ADSysInfo = CreateObject("ADSystemInfo")
      Set CurrentUser = GetObject("LDAP://" & MonCompte)
      strGroups = LCase(Join(CurrentUser.MemberOf))
      Mesgroupes = Replace(strGroups," ",",") 
      MesGroupes = Split(MesGroupes,",")
      nb = UBound(MesGroupes)
      GroupeOK = ""
     
      For n = 0 to nb
     
    	If left(MesGroupes(n),3) = "cn=" then
     
                            GroupeOK = right(MesGroupes(n),Len(Mesgroupes(n))-3)
                            wscript.echo"GroupeOk = " & GroupeOK
     
    	end if
     
      Next
    Là, j'ai une erreur : essai4.vbs(4, 3) (null): Le serveur n'est pas opérationnel.

    Pourtant l'utilisateur existe bien!

    Avec la syntaxe là, ça ne marche pas non plus :

    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
      Set CurrentUser = GetObject("LDAP://cn=" & MonCompte & ",dc=pdch,dc=fr")
     
      strGroups = LCase(Join(CurrentUser.MemberOf))
      Mesgroupes = Replace(strGroups," ",",")
      MesGroupes = Split(MesGroupes,",")
      nb = UBound(MesGroupes)
      GroupeOK = ""
     
      For n = 0 to nb
     
    	If left(MesGroupes(n),3) = "cn=" then
                           GroupeOK = right(MesGroupes(n),Len(Mesgroupes(n))-3)
                           wscript.echo GroupeOK
    	end if
     
      Next
    message d'erreur : cet objet ne se trouve pas sur le serveur
    Pourtant celui-ci existe bien

    avec l'OU d'indiquer, ça ne marche pas à tout les coups, mais pourquoi???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set CurrentUser = GetObject("LDAP://cn=" & MonCompte & ",OU=Test,dc=pdch,dc=fr")
    Quand ça ne marche pas
    message d'erreur : cet objet ne se trouve pas sur le serveur

    En fait je n'ai pas le controle sur tout active directory juste une OU de test, quand j'entre un utilisateur de l'OU test ça marche mais quand j'en entre un autre ça ne marche pas. Ceci peut-il être du que je n'ai pas le controle de ces OU?

    Quelqu'un a t-il un script qui permet de connaître l'OU d'un utilisateur donné?

    Quelqu'un pourrait-il m'aider ou m'envoyer vers d'autres pistes?
    Merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 64
    Points : 33
    Points
    33
    Par défaut
    sinon pour ma recherche des groupes en général, j'utilise le code suivant :

    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
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
     
    Set objCOmmand.ActiveConnection = objConnection
     
    objCommand.CommandText = _
      "Select Name from 'LDAP://DC=pdch,DC=fr' " _
       & "Where objectClass='Group'" 
    Set objRecordSet = objCommand.Execute
    objRecordSet.MoveFirst
     
    Do Until objRecordSet.EOF
         wscript.echo objRecordSet.Fields("Name").Value
         objRecordSet.MoveNext
    Loop
    Ce code marche trés bien mais quelqu'un aurait-il un code moins "imposant"?

    pour l'affichage des groupes selon l'utilisateur c'est réglé! Le fait que ça marche une fois de temps en temps et bien du au fait que je n'ai pas le controle sur les autres OU!
    Donc maintenant, il me faudrait un script qui me permettre de connaître l'OU d'un utilisateur donné, si quelqu'un peut m'aider se serait sympa!

    Merci d'avance

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 64
    Points : 33
    Points
    33
    Par défaut
    j'ai essayé ce 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
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
     
    Set objCOmmand.ActiveConnection = objConnection
    objCommand.CommandText = _
      "Select ou from 'LDAP://DC=pdch,DC=fr'Where objectClass='user' and samAccountName='"& MonCompte  & "'" 
    Set objRecordSet = objCommand.Execute
    objRecordSet.MoveFirst
     
    if objRecordSet.EOF=false then
             wscript.echo objRecordSet.Fields("OU").Value
    end if
    Je n'ai pas d'erreur mais il m'affiche null, pourquoi??

    je viens de trouver un morceau de code qui affiche l'OU de l'utilisateur courant ou de l'ordinateur mais comment l'adapter à mon cas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set objADSysInfo = CreateObject("ADSystemInfo")
    WScript.Echo "Current site name: " & objADSysInfo.SiteName

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 64
    Points : 33
    Points
    33
    Par défaut
    Pour l'instant j'ai trouvé une solution qui fonctionne mais qui ne me conviens pas forcément. Je parcours les OU une par une, puis je compare les utilisateurs un à un afin de voir si le nom d'utilisateur entré correspond a l'utilisateur.

  5. #5
    Membre actif Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Points : 239
    Points
    239
    Par défaut
    Au risque de passer pour un inculte, qu'entends tu par OU de l'utilisateur???
    Pourquoi vouloir ré-inventer la roue...
    ...Surtout si c'est pour la faire carrée...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 64
    Points : 33
    Points
    33
    Par défaut
    OU c'est les unités d'organisations dans Active directory!
    Mais bon moi j'aurais pu poser la même question il ya même pas un mois!
    On ne peut pas tout savoir

  7. #7
    Membre actif Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Points : 239
    Points
    239
    Par défaut
    Merci, j'irai dormir moins bête...
    Désolé de ne pouvoir t'aider...
    Pourquoi vouloir ré-inventer la roue...
    ...Surtout si c'est pour la faire carrée...

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 64
    Points : 33
    Points
    33
    Par défaut
    de rien!

    J'ai trouvé une solution qui me convient tout à fait !
    Pour ce que ça interesse je mets 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
      	Set objDSE = GetObject("LDAP://rootDSE") 
      	set oConnection = CreateObject("ADODB.Connection") 
      	oConnection.Provider = "ADsDSOObject" 
      	oConnection.Open "ADs Provider"   
     
          ' filtre sur le login utilisateur  
          ' -------------------------------
      	sFilter = "(&(objectclass=user)(samaccountname=" & monUser & "))" 
     
          ' Définition des paramètres récupéré : ici DistinguishedName 
          ' ---------------------------------------------------------- 
      	sQuery = "<LDAP://" & objDSE.Get("defaultNamingContext") & ">;" & sFilter & ";distinguishedName;subtree" 
      	Set oRecordSet = oConnection.Execute(sQuery) 
     
      	usrDN = oRecordset.Fields("distinguishedName").value 
      	oConnection.Close 
     
          ' Affichage de l'OU
          ' -----------------
      	partie = split(usrDN,",")
     
    	chercheOU = Right(partie(1),Len(partie(1))-3)

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/11/2008, 11h03
  2. Réponses: 3
    Dernier message: 03/04/2008, 17h04
  3. Réponses: 18
    Dernier message: 13/08/2007, 15h30
  4. Réponses: 8
    Dernier message: 06/07/2007, 08h03
  5. Réponses: 1
    Dernier message: 07/05/2007, 16h12

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