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 - Collection à 0 ou 1 valeur


Sujet :

VBScript

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut VBS - Collection à 0 ou 1 valeur
    Bonjour,

    Je bosse depuis quelques temps sur un script .VBS qui permet d'automatiser le montage de nos lecteurs réseaux (en se basant sur un fichier .CSV). Ceux-ci se montent par GPO via ce fameux script VBS en fonction des groupes Active Directory auquels appartient l'utilisateur qui se connecte.

    Voici la partie du code qui m'intérèsse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Set ADSysInfo = CreateObject("ADSystemInfo")											
    Set CurrentUser = GetObject("LDAP://" & ADSysInfo.username)																				
     
    strGroups = CurrentUser.MemberOf														
    For Each Item in strGroups 													
    	groupeCourant = Split(Item, ",")
            MsgBox groupeCourant(0)
    	'Traitement de comparaison du GroupeCourant avec d'autres groupes pour monter le partage '
    Next
    Le script fonctionne parfaitement lorsque l'utilisateur appartient à minimum 2 utilisateurs.
    A l'inverse lorsque l'utilisateur appartient à 0 ou 1 groupe, l'erreur suivante apparait ligne 5 carac 1 : "Err : Cet objet n'est pas une collection".

    N'y a t-il pas moyen de garder cette logique de For Each avec eventuellement 0 ou 1 valeur dans ma variable strGroups ?

    Merci d'avance !

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Si ça peut t'aider, j'avais fait ça en asp (donc en vbscript) :

    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
     
    <%
    Matricule = Request.QueryString("Mat")
    Const ADS_SCOPE_SUBTREE = 2
     
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
     
    objConnection.Properties("User ID")= "domaine\user"
    objConnection.Properties("Password")= "pwd"
     
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection
     
    sql = "Select memberOf, sn, givenname "
    sql = sql & "from 'LDAP://domaine' "
    sql = sql & " where objectCategory = 'user' "
    sql = sql & " and objectClass = 'user' "
    sql = sql & " and extensionAttribute8 = '" & Matricule & "' "
    objCommand.CommandText = sql
    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
    Set objRecordSet = objCommand.Execute
     
    Response.Write "<center>"
    Response.Write "Liste des groupes de : " & objRecordset.Fields("sn").Value & " " & objRecordset.Fields("givenname").Value & " (" & Matricule & ")<br><br><br>"
    Response.Write "</center>"
     
    if not objRecordSet.EOF then
    	listGroups = ""
    	listGroups = objRecordset.Fields("memberOf").Value
    	for i = 0 to uBound(listGroups)
            chaine_groupe = listGroups(i)
    	    groupTmp = Mid(chaine_groupe, InStr(chaine_groupe, "CN=") + 3, InStr(chaine_groupe, ",") - 4)
    '	    if groupTmp <> "Admins du domaine" then
    	        strGroupes = strGroupes & groupTmp & "<br>"
    '	    end if
    	next
    	Response.Write strGroupes
    end if
    Set objCommand = Nothing
    Set objConnection = Nothing
    %>

  3. #3
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    @artichaulo
    C'est en effet un problème un peu connu et c'est vrai qu'il est très ennuyeux que le type du retour dépend le nombre soit zero, soit un ou soit plus nombreux qu'un qu'il trouve. Vous pouvez consulter cet article pour s'inspirer.
    http://www.rlmueller.net/MemberOf.htm

    N'y a t-il pas moyen de garder cette logique de For Each avec eventuellement 0 ou 1 valeur dans ma variable strGroups ?
    Si vous voulez absolument garder la boucle, vous pouvez faire comme ça.
    Code vbscript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    strGroups = CurrentUser.MemberOf	
     
    If IsEmpty(strGroups) Then
        strGroups=array()
    ElseIf TypeName(strGroups) = "String" Then
        strGroups=array(strGroups)
    End If
     
    For Each Item in strGroups		
        groupeCourant = Split(Item, ",")
            MsgBox groupeCourant(0)
        'Traitement de comparaison du GroupeCourant avec d'autres groupes pour monter le partage '
    Next

Discussions similaires

  1. VBS aide pour compter des valeurs dans des fichiers xml
    Par jorge91450 dans le forum VB.NET
    Réponses: 1
    Dernier message: 09/01/2013, 13h28
  2. Réponses: 4
    Dernier message: 25/11/2009, 10h46
  3. Comment récuperer la valeur de retour d'un .vbs
    Par FabFabFab dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 05/04/2006, 14h45
  4. Probleme recuperation d'une valeur : script vbs -> .bat
    Par pinpin_du_net dans le forum Windows
    Réponses: 3
    Dernier message: 10/05/2005, 12h43
  5. [VB6]Valeurs une collection renvoyée par la fonction d'une classe
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 30/03/2004, 11h04

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