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 :

Récuperer les comptes utilisateurs dans des groupes


Sujet :

VBScript

  1. #1
    Membre régulier
    Profil pro
    ingé sys
    Inscrit en
    Avril 2004
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : ingé sys

    Informations forums :
    Inscription : Avril 2004
    Messages : 156
    Points : 70
    Points
    70
    Par défaut Récuperer les comptes utilisateurs dans des groupes
    Bonjour,
    le vb et moi ça fait 2 ! Donc je sollicite votre aide.

    J'ai besoin de recup les noms et prénoms des personnes qui sont dans une centaine de groupe. Ces groupes commencent tous par u_bsde_ donc il faut que je liste tout ça. Y a un script vbs dans ma société dont j'essaie de comprendre. J'ai fais un peu de programmation php et c il y a 3 ans mais VB jamais.
    Je comprends grosso modo le script mais il fonctionne pas :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    Const ADS_UF_ACCOUNTDISABLE = 2
     
     
    Function ObjSidToStrSid(arrSid)
    ' Function to convert OctetString (byte array) to Decimal string (SDDL) 
    Dim strHex, strDec
     
    strHex = OctetStrToHexStr(arrSid)
    strDec = HexStrToDecStr(strHex)
    ObjSidToStrSid = strDec
    End Function ' ObjSidToStrSid
     
    Function OctetStrToHexStr(arrbytOctet)
    ' Function to convert OctetString (byte array) to Hex string.
    Dim k
     
    OctetStrToHexStr = ""
    For k = 1 To Lenb(arrbytOctet)
    OctetStrToHexStr = OctetStrToHexStr _
    & Right("0" & Hex(Ascb(Midb(arrbytOctet, k, 1))), 2)
    Next
    End Function ' OctetStrToHexStr
     
    Function HexStrToDecStr(strSid)
     
    Const BYTES_IN_32BITS = 4
    Const SRL_BYTE = 0
    Const IAV_START_BYTE = 2
    Const IAV_END_BYTE = 7
    Const RID_START_BYTE = 8
    Const MSB = 3 'Most significant byte
    Const LSB = 0 'Least significant byte
     
    Dim arrbytSid, lngTemp, base, offset, i
     
    ReDim arrbytSid(Len(strSid)/2 - 1)
     
    ' Convert hex string into integer array
    For i = 0 To UBound(arrbytSid)
    arrbytSid(i) = Cint("&H" & Mid(strSid, 2 * i + 1, 2))
    Next
     
    ' Add SRL number
    HexStrToDecStr = "S-" & arrbytSid(SRL_BYTE)
     
    ' Add Identifier Authority Value
    lngTemp = 0
    For i = IAV_START_BYTE To IAV_END_BYTE
    lngTemp = lngTemp * 256 + arrbytSid(i)
    Next
    HexStrToDecStr = HexStrToDecStr & "-" & CStr(lngTemp)
     
    For base = RID_START_BYTE To UBound(arrbytSid) Step BYTES_IN_32BITS
    lngTemp = 0
    For offset = MSB to LSB Step -1
    lngTemp = lngTemp * 256 + arrbytSid(base + offset)
    Next
    HexStrToDecStr = HexStrToDecStr & "-" & CStr(lngTemp)
    Next
    End Function ' HexStrToDecStr
     
    Const ForAppending = 8
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile _
        ("liste_users_in_groups.txt", ForAppending, True)
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Open "Provider=ADsDSOObject;"
    Set objCommand = CreateObject("ADODB.Command")
    objCommand.ActiveConnection = objConnection
     
    objCommand.Properties("Page Size") = 100000
    objCommand.CommandText = "<LDAP://CN=nom_groupe,OU=nom_ou,OU=Groups,dc=cns,dc=concrete,dc=int>;(objectCategory=User)" & _
            ";givenName,sn,userprincipalname,objectSid,distinguishedName,sAMAccountName,userAccountControl;subtree"  
     
     
    WScript.Echo "avant la boucle"
     
    Set objRecordSet = objCommand.Execute
    intCounter = 0
    Do Until objRecordset.EOF
     
    	WScript.Echo "dans la boucle"
        usergn=objRecordset.Fields("givenName")
        userna=objRecordset.Fields("sn")
        usermail=objRecordset.Fields("userprincipalname")
        userdn=objRecordset.Fields("distinguishedName")
        useracc=objRecordset.Fields("sAMAccountName")
        intUAC=objRecordset.Fields("userAccountControl")
     
        If InStr(userdn,",OU=nom_ou")>InStr(userdn,",OU=") then
    	If intUAC AND ADS_UF_ACCOUNTDISABLE Then
    	else
     
    		usersite=Mid(userdn,InStr(userdn,",OU=")+4,InStr(userdn,",OU=nom_ou")-(4+InStr(userdn,",OU=")))
    	end if
    		intCounter = intCounter + 1
    			'on ecrit les noms dans le fichier txt
    	        objTextFile.WriteLine( usersite&";"&usergn&";"&userna&";"&usermail)
            end if
        objRecordset.MoveNext
    Loop
    WScript.Echo "apres la boucle" 
    WScript.Echo VbCrLf & intCounter & " ont été listé"
     
    objTextFile.Close 
    objConnection.Close
    Le script si j'ai bien compris devrait marcher mais pour un seul groupe que je nomme "en dur" dans le script. Mais ça marche pas ! Donc déjà j'essaie de le faire fonctionner de cette façon. Ensuite je verrai pour la centaine de groupe.

    Donc le script s'exécute mais il rentre pas dans ma boucle. J'ai placé des "echo" pour voir ou ça plante et donc je constate qu'il ne rentre pas dans la boucle pour lister les personnes.
    Quelqu'un peut-il m'aider et me dire pourquoi ?
    Merci d'avance pour l'aide, les conseils, les tuyaux !

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Points : 44
    Points
    44
    Par défaut
    Salut Ludo,

    Visiblement ça coince à partir de la ligne 70.

    Ligne 72, tu fais référence dans ta requête LDAP à des choses que ton script ne peut pas comprendre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <LDAP://CN=nom_groupe,OU=nom_ou,OU=Groups
    "non_groupe" et "nom_ou" ... sont - a prioris - des variables qui ne sont définis nulle part. De fait, ton script ne pourra pas aller chercher les infos !

    Ensuite, ton "IF" ligne 91 me semble un peu étrange ... ne devrais tu pas remplacer le "AND" par un égal ("=") ?

    Voilà déjà quelques pistes à creuser
    Emeric

  3. #3
    Membre régulier
    Profil pro
    ingé sys
    Inscrit en
    Avril 2004
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : ingé sys

    Informations forums :
    Inscription : Avril 2004
    Messages : 156
    Points : 70
    Points
    70
    Par défaut
    merci pour la réponse.

    En fait ces variables, c'est moi qui les ai mis à la main.

    Je remplace par ce qu'il faut ensuite.
    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <LDAP://CN=u_bs_de,OU=bonna sabla,OU=Groups

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Points : 44
    Points
    44
    Par défaut
    OK ...

    Ensuite, ton "IF" ligne 91 me semble un peu étrange ... ne devrais tu pas remplacer le "AND" par un égal ("=") ?

Discussions similaires

  1. [GRAPH] BOXPLOT : relier les moyennes de observée dans des groupes / BOXCONNECT
    Par Malex_SAS dans le forum ODS et reporting
    Réponses: 1
    Dernier message: 04/11/2011, 09h04
  2. Réponses: 1
    Dernier message: 05/11/2009, 09h08
  3. Réponses: 4
    Dernier message: 03/05/2007, 11h28
  4. Créer des utilisateurs et des groupes(droits) sous SqlServer
    Par shako95 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/11/2005, 07h57
  5. récupérer les erreurs php dans des exceptions
    Par jeanvincent dans le forum Langage
    Réponses: 6
    Dernier message: 14/10/2005, 16h26

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