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 :

Probleme de boucle "do"


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 Probleme de boucle "do"
    Bonjour,

    Je suis en train de faire un petit script, qui m'importe les utilisateurs qui sont dans un csv, dans l'Active Directory.

    Ce script fonctionne, toutefois je veux rajouter un UID, qui quand on l'active via l'interface graphique sous l'Active Directory, prend le 1er numéro de libre.

    Etant donné que sous Linux, l'UID détient les droits d'utilisateur, il ne faut évidemment pas que deux utilisateurs ait le même.

    Je pouvais, grâce a mon script, activer l'UID, mais quand je créais plusieurs utilisateurs, ils avaient tous le même UID.

    J'ai donc mis une petite boucle au point, qui est censé checker tous les utilisateurs afin de voir quel est le 1er UID libre.

    Pour des raisons pratique, mes UID commence à 10000.

    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
     
    Option Explicit
     
    'déclaration des variables
    Dim fso
    Dim fichier
    Dim Ligne
    dim intPwdValue 
    Dim v
    dim valeur
    valeur=10000
    dim vvaleur
    dim uidlibre
    intPwdValue = 0 
    Dim complet, account, login, nom, prenom, display, password
     
    '16 détermine le fichier à ouvrir
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set fichier = fso.OpenTextFile("d:\testscript\liste.csv", 1)
     
    'boucle qui lis chaque ligne du fichier et qui stocke les informations dans un tableau
    Do While (Not fichier.AtEndOfStream)
    	Ligne = fichier.Readline
    	v = Split(Ligne, ";")
    	Cree_Utilisateur v(0), v(1), v(2), v(3), v(4), v(5), v(6), v(7)
    Loop
     
    'fonction qui permet de créer l'utilisateur sous Active directory
    Function Cree_Utilisateur(gid, account, groupeunix, nom, prenom, display, password, mail)
     
       'determine le chemin LDAP
    Dim Root
    Dim DomainPath
    Set Root = GetObject("LDAP://DC=dom,DC=aine,DC=local")
    DomainPath = "DC=dom,DC=aine,DC=local"
     
    '36 Indique l'OU de l'utilisateur
    Dim chemin
    Set chemin = GetObject("LDAP://OU=peuple," & DomainPath)
     
    '40 Boucle qui check l'UID dispo
    objRecordSet.MoveFirst
    Do while objRecordSet.EOF
     
    	Set objUser = GetObject(objRecordSet.Fields("AdsPath").Value)
    	uid=user.uidnumber
    		If user.uidnumber = valeur Then
    		valeur = valeur +1
    		end if
    '49
    	objRecordSet.MoveNext
    loop
    msgbox("la commande s'est terminé correctement!")
    C'est la boucle à la fin qui ne fonctionne pas, je l'ai pourtant recopié d'un autre script d'extraction de donnée qui fonctionnait nickel (la même boucle, extraction et condition différentes).

    Je compte mettre le script en entier à l'endroit qui correspondra le mieux, quand il sera terminé.

    Merci d'avance si certaines personnes peuvent m'aider.

    PS : j'ai testé pas mal de modif sur la boucle avant de venir ici, en fait elle est censé checker tous les utilisateurs, si elle trouve que le nombre qu'elle teste est pris, alors +1 et objet suivant, sinon objet suivant, et à la fin du fichier, on est censé avoir dans la variable un UID libre. (j'espère ne pas me trompe).

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut
    Comment est remplis le objRecordSet ?
    Entre tu dans la 2° boucle ?
    Pas de End Function ?
    En général une fonction revoie un resultat dans sont nom, du style X= MaFonction, si tu recupéres dans la variable Valeur, ne faudrait il pas appeler cette fonction de cette façon ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Valeur = 10000 + Cree_Utilisateur v(0), v(1), v(2), v(3), v(4), v(5), v(6), v(7)
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Par défaut
    Bonjour,

    Oui effectivement, il manquait le end function.

    Mais de toute façon, ma boucle n'est pas bonne, elle ne fouille l'AD qu'une fois, alors qui faudrait qu'elle le fasse quasiment une fois par objet.

    Je pense que cette façon de faire est trop complique, je vais en trouver une autre.

    Merci pour ton aide en tout cas.

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

Discussions similaires

  1. Probleme avec encodage de simple quote
    Par linkowich dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2005, 13h16

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