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 :
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
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
'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
Mais hélas, rien ne marche.



Merci,


Miistik.