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 :

recherche utilisateur local


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Par défaut recherche utilisateur local
    Bonjour,

    voila mon problème :

    j'ai besoin de créer un utilisateur local mais pour ça, je dois savoir si l'utilisateur n'existe pas déjà et c'est là que ça coince.

    voila mon
    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
    Set WshShellObj = WScript.CreateObject("WScript.Shell")
    Set WshProcessEnv = WshShellObj.Environment("Process")
     
    '------------------------
    user = "toto"
    msgbox "Recherche de l'utilisateur " & user
    strComputer = WshProcessEnv("COMPUTERNAME")
    Set colGroups = GetObject("WinNT://" & strComputer & "")
    colGroups.Filter = Array("group")
     
    For Each objGroup In colGroups
    For Each objUser in objGroup.Members
     
    'test1
    if objUser.Name = user then
    	msgbox "L'utilisateur existe déjà"
    	exit for
    'test2
    else 
    	msgbox "L'utilisateur n'existe pas"
            'je créerai ici l'utilisateur
    	exit for
    end if	
    Next
    Next
    msgbox "fin de boucle"
    '----------------------------
    je fais une boucle qui va lire tout les utilisateurs locaux et si il y en a un qui correspond à "toto", il doit afficher ""L'utilisateur existe déjà" et sortir de la boucle générale grace au exit for

    le problème c'est qu'il ne sort pas du tout de la boucle et affiche autant de fois qu'il y a d'utilisateurs locaux "L'utilisateur n'existe pas" et "L'utilisateur existe déjà" quand il tombe desus.

    comment sortir d'une boucle for definitivement ?

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

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

    Je te propose d'utiliser un booléen pour stocker si oui ou non l'utilisateur a été trouvé, plutôt que d'afficher les informations dans la boucle For :
    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
    Set objWshNetwork = WScript.CreateObject("WScript.Network")
    strUser = "toto"
    msgbox "Recherche de l'utilisateur " & strUser
    strComputer = UCase(objWshNetwork.ComputerName)
     
    Set colGroups = GetObject("WinNT://" & strComputer & "")
    colGroups.Filter = Array("group")
     
    boolUserExists = False
    For Each objGroup In colGroups
    	For Each objstrUser in objGroup.Members
    		If StrComp(objstrUser.Name, strUser, vbTextCompare) = 0 Then
    			boolUserExists = True
    			Exit For
    		End If
    	Next
    	If boolUserExists = True Then Exit For
    Next
    If boolUserExists = True Then
    	msgbox "L'utilisateur existe déjà"
    Else
    	msgbox "L'utilisateur n'existe pas"
    	' Ici Création de l'utilisateur
    End If
     
    ' ---------------------------------------------------------------
    'Evolution si intéressé
    boolUserExists = False
    strUserGroups = ""
    For Each objGroup In colGroups
    	For Each objstrUser in objGroup.Members
    		If StrComp(objstrUser.Name, strUser, vbTextCompare) = 0 Then
    			boolUserExists = True
    			strUserGroups = strUserGroups & vbTab & " - " & objGroup.Name & vbCrLf
    			Exit For
    		End If
    	Next
    Next
    If boolUserExists = True Then
    	msgbox "L'utilisateur existe déjà." & vbCrLf & "Groupes : " & vbCrLf & strUserGroups
    Else
    	msgbox "L'utilisateur n'existe pas"
    	' Ici Création de l'utilisateur
    End If
    Après je ne pense pas que ce soit la meilleure méthode pour trouver un utilisateur local : les utilisateurs du domaine (si il y en a un), membres de tes groupes locaux seront aussi listés...

    Bonne continuation

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Je disais donc, pour moi cette méthode là serait meilleure, si on parle bien d'utilisateurs locaux uniquement :
    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 objWshNetwork = WScript.CreateObject("WScript.Network")
    strUser = "toto"
    msgbox "Recherche de l'utilisateur " & strUser
    strComputer = UCase(objWshNetwork.ComputerName)
     
    Set colUsers = GetObject("WinNT://" & strComputer & "")
    colUsers.Filter = Array("user")
     
    boolUserExists = False
    For Each objUser In colUsers
    	'WScript.Echo objUser.Name
    	If StrComp(objUser.Name, strUser, vbTextCompare) = 0 Then
    		boolUserExists = True
    		Exit For
    	End If
    Next
    If boolUserExists = True Then
    	msgbox "L'utilisateur existe déjà"
    Else
    	msgbox "L'utilisateur n'existe pas"
    	' Ici Création de l'utilisateur
    End If
    A+

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Par défaut
    ta deuxième solution me parait plus simple en effet.

    par contre, j'ai un peu de mal a comprendre la difference entre les deux codes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each objUser In colUsers
    	'WScript.Echo objUser.Name
    	If StrComp(objUser.Name, strUser, vbTextCompare) = 0 Then
    		boolUserExists = True
    		Exit For
    	End If
    Next
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For Each objGroup In colGroups
    	For Each objstrUser in objGroup.Members
    		If StrComp(objstrUser.Name, strUser, vbTextCompare) = 0 Then
    			boolUserExists = True
    			strUserGroups = strUserGroups & vbTab & " - " & objGroup.Name & vbCrLf
    			Exit For
    		End If
    	Next
    Next
    peux-tu m'expliquer la difference entre les deux STP ?

    je ne maîtrise pas du tout les booléens...

    j'ai fait la même chose pour les utilisateurs d'un domaine et là par contre pas de soucis.

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    L'évolution (de mon premier post) continue de parcourir les groupes même si l'utilisateur a été trouvé, et renseigne dans la variable "strUserGroups " tous les groupes locaux auxquels l'utilisateur appartient. Cette variable est affichée à la fin si utilisateur a été trouvé.

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 35
    Par défaut
    j'ai ajouté ton bout de code au mien et ca marche nikel. merci beaucoup !

    pour info, voila ce que fait mon programme pour le moment (car il est loin d'etre terminé) :

    - je demande a l'utilisateur un nom d'utilisateur qu'il veut creer avec le mot de passe de son choix,

    - je demande si on est en domaine ou pas

    - en fonction de la réponse précédente, je crée l'utilisateur en local ou en domaine

    - je crée des répertoires en fonction du chemin qu'à donner l'utilisateur

    j'ai découvert le vbscript il y a juste 3 semaines alors ça n'avance pas vite... mais il faut bien commencer un jour ! :o)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/05/2008, 09h47
  2. Recherche utilisateurs Silk Test
    Par stef_chand dans le forum Outils
    Réponses: 0
    Dernier message: 07/12/2007, 11h29
  3. Plugin Generateur Code & Recherche Utilisateur/Developpeur
    Par azerr dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 07/06/2006, 17h12
  4. Réponses: 1
    Dernier message: 19/01/2006, 16h23
  5. [xp] compte passport et compte utilisateur local
    Par Eusebius dans le forum Windows XP
    Réponses: 5
    Dernier message: 06/07/2005, 13h59

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