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 :

recupe d'info 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 recupe d'info dans l'ad
    bonjour a tous,

    Mon objectif est chaque utilisateur de l'AD dont le compte expire dans un mois soit prévenu soit prévenu du nombre de jour qu'il lui reste avant que son compte soit désactivé!

    voici mon 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
     
     
    Set WshNet = CreateObject("WScript.Network")
    User = WshNet.Username
     
    Set objDSE = GetObject("LDAP://nomduserdns.nomdudomaine.local/dc=nomdudomaine,dc=local" )'(est ce bien la bonne facon de le noter?)
    set oConnection = CreateObject("ADODB.Connection" )
    oConnection.Provider = "ADsDSOObject"
    oConnection.Open "ADs Provider"  
     
    ' ci dessous le filtre sur le login utilisateur  
    sFilter = "(&(objectclass=user)(samaccountname=" & User & " ))"
     
    ' dans cette ligne, on défini les paramètres récupéré : ici AccountExpirationDate
    ' c'est celle ci que vous pouvez modifier en fonction des paramètres ADSI à récupérer (paramètre avant subtree, séparé par des virgules)
     
    sQuery = "LDAP://nomduserdns.nomdudomaine.local/dc=nomdudomaine,dc=local" & objDSE.Get("defaultNamingContext") & ">;" & sFilter & ";distinguishedName;subtree"
    Set oRecordSet = oConnection.Execute(sQuery)
     
    ' on inscrit le cn dans une variable, et voilà
     
    usrCN = oRecordset.Fields("distinguishedName").value
    Set objUser = GetObject (usrCN)
     
    dtmAccountExpiration = objUser.AccountExpirationDate
     
    If Err.Number <> -2147467259 Or dtmAccountExpiration <> "1/1/1970" Then
        MsgBox "Votre compte expire le : " & objUser.AccountExpirationDate, vbExclamation, "Avertissement"
    End If
    Mon érreur est en ligne 15

    la propiété n'est pas présente dans le cache

    je pense que l'erreur viens du fait que soit le scrypte n'arrive pas a chercher l'information demande, soit elle est mal traité apres avoir été récupéré!

    merci a ceux qui peuvent m'aider

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Je ne fais pas de AD, mais j'ai remarqué deux ou trois chose que tu peux essayer.

    1) remplace les ';' par des ',' ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sQuery = "<LDAP://" & objDSE.Get("defaultNamingContext") & ">;" & sFilter & ";distinguishedName;subtree"2)
    Je crois que la méthode execute ne prend en paramètre qu'une requête SQL (ce n'est pas ce que tu fais). Regarde ici, il y a un exemple VB6.
    http://www.developpez.net/forums/showthread.php?t=58832

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set test = con.Execute("SELECT un, Name, title, telephoneNumber From 'LDAP://DC=lassonde, DC=COM' WHERE objectClass='user' AND objectCategory='Person'", lRecordAffected, ErrNumber, ErrDescription)
    Sur la page tu verras du code avec des Dim toto As quelquechose, ne prends pas peur la déclaration des variables n'est pas identique en VB6 et en VBS.

    3) J'ai trouvé une page avec des exemples de codes, si cela peut t'aider :
    http://msdn2.microsoft.com/en-us/library/ms676870.aspx
    C'est l'aide MSDn, dans le menu sur la gauche tu as tout ce qu'il faut, mais je ne suis pas sur que tu t'y retrouveras en tant que débutant

    4) voilà je reposte ce qu'il y a d'important dans ma réponse.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Par défaut
    effectivement, je comprend pas tout a ce qui y a ecrit sur ces pages,

    sinon y a beaucoup de theorie mais rien qui me dis ou modifier mon script

    un ptit truc qui peut ptet aider et ce script que j'ai fait et qui fonctionne mais qui me donne la date de validite de 1 utilisateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    Set WshNet = CreateObject("WScript.Network")
    User = WshNet.Username
     
    Set objUser = GetObject ("LDAP://cn=bidon roger,ou=test,dc=mjs,dc=local")
     
    dtmAccountExpiration = objUser.AccountExpirationDate
     
    If dtmAccountExpiration <> "01/01/1601 02:00:00" Then
        MsgBox "Votre compte expire le : " & objUser.AccountExpirationDate, vbExclamation, "Avertissement"
    End If
    celui ci fonctionne, je comprend pas pkoi il est si court par rapport a l'autre.

    meme en comparant les 2 j'arrive pas a comprendre pkoi ca marche pas.

    ++

  4. #4
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    Salut,

    a mon avis, ton second script ne doit pas fonctionner correctement car tu ne reprends pas ta variable User dans ta requete LDAP, je la jouerai comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set objUser = GetObject ("LDAP://cn=" & user & ",ou=test,dc=mjs,dc=local")
    sinon ton get object pointera toujours sur "Bidon Roger"....

    Sinon, va voir l'article "How Can I Determine When an Active Directory User Account will Expire?" des scripting guys, tout le code est très bien expliqué.

    http://www.microsoft.com.nsatc.net/t...5/hey0718.mspx


    A++

  5. #5
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set WshNet = CreateObject("WScript.Network")
    User = WshNet.Username
     
    Set objUser = GetObject ("LDAP://cn=" & user & ",ou=test,dc=mjs,dc=local")
     
    dtmAccountExpiration = objUser.AccountExpirationDate
     
    If dtmAccountExpiration <> #01/01/1601 02:00:00# Then
        MsgBox "Votre compte expire le : " & objUser.AccountExpirationDate, vbExclamation, "Avertissement"
    End If
    Essaye ceci.

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Par défaut
    ok merci

    je pense effectivement que ca doit fonctionner comme ca

    une derniere question car je ne trouve pas d'info pour ca sur le net

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set WshNet = CreateObject("WScript.Network")
    User = WshNet.Username
    ca ca determine que User = l'username de la personne

    existe t'il la meme chose pour l'OU de la personne?
    du genre

    OuUser = wshnet.ou

    merci de vos reponses en tout cas

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

Discussions similaires

  1. [XML] recup des infos XML dans un fichier PHP
    Par ps3game dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 19/04/2010, 10h52
  2. [MySQL] recup d'info dans formulaire
    Par yayacameleon dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/11/2005, 10h36
  3. Insertion d'info dans un textarea
    Par krown dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/01/2005, 21h32
  4. [C#] balise <a> en fonction d'infos dans l
    Par Pierrre dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/08/2004, 12h40
  5. Réponses: 2
    Dernier message: 19/01/2004, 12h19

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