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 !