Bonjour,
Travaillant sur un autre script, la phase de test a échoué et je ne comprends pas trop.
Je cherche à vérifier l'appartenance d'un utilisateur à un groupe AD et ainsi monter les lecteurs associés.
Mon souci vient du fait que mon script monte tous les lecteurs à tout le monde ! Ceci est donc problématique ....
Voici mon code :
Pour IsMember, j'ai testé plusieurs choses :
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 ON ERROR RESUME NEXT Dim UserName set WshShell = CreateObject("WScript.Shell") Set WshNetwork = WScript.CreateObject("WScript.Network") UserName = WshNetwork.UserName DomainName="yy.com" LogonServer=WshShell.ExpandEnvironmentStrings("%LogonServer%") Set UserObj = GetObject("LDAP://" & DomainName & "/" & WshNetwork.UserName) Set WshProcessEnv = WshShell.Environment("PROCESS") ' *************** BOUCLE VERIFICATION GROUPE AD ********************** For Each GroupObj In UserObj.groups WshNetwork.MapNetworkDrive "P:" , WshProcessEnv("HOMESHARE") WshNetwork.MapNetworkDrive "Q:" , "\\chemin1" WshNetwork.MapNetworkDrive "S:" , "\\chemin2" WshNetwork.MapNetworkDrive "L:" , "\\chemin3" If IsMember("Grp1") Then WshNetwork.MapNetworkDrive "K:" , "\\chemin4" End if If IsMember("Grp2") Then WshNetwork.MapNetworkDrive "W:", "\\chemin5" End if If IsMember("Grp3") Then WshNetwork.MapNetworkDrive "R:", "\\chemin6" End If If IsMember("Grp4") Then WshNetwork.MapNetworkDrive "M:", "\\chemin7" End If Next
Mais hélas, rien ne marche.
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 'Function IsMember (strGroup) ' Set WshNetwork = CreateObject ("WScript.Network") ' Set oGroup = GetObject ( _ ' "WinNT://" & WshNetwork.UserDomain & "/" & strGroup) ' IsMember = WshNetwork.IsMember ( _ ' "WinNT://" & WshNetwork.UserDomain & "/" & _ ' WshNetwork.UserName) 'End Function Function IsMember(sGroup) Dim sAdsPath,oUser,oGroup,g_oGroupDict,g_oNet 'Peupler dictionnaire si pas encore créé If IsEmpty(g_oGroupDict) Then Set g_oGroupDict=CreateObject("Scripting.Dictionary") g_oGroupDict.CompareMode = vbTextCompare sAdsPath = res.UserDomain &"/"& res.UserName Set oUser = GetObject("WinNT://"& sAdsPath & ",user") For Each oGroup In oUser.Groups g_oGroupDict.Add oGroup.Name, "-" Next Set oUser = Nothing End If IsMember = CBool(g_oGroupDict.Exists(sGroup)) End Function 'Function IsMember(strGroup) 'IsMember=False 'If InStr(UserGroups,"[" & strGroup & "]") Then 'IsMember=True 'End If 'End Function
Merci,
Miistik.
Partager