[VBS]Tester l'appartenance d'un utilisateur à un groupe AD

Tester l'appartenance d'un utilisateur à un groupe AD [VBS] - VB/VBA/VBS - Programmation

Marsh Posté le 11-05-2011 à 12:40:58    

Bonjour
 
En script d'ouverture de session pour mes utilisateurs, j'ai script vbs qui monte les lecteurs réseaux des utilisateurs.
 
J'ai un lecteur que je dois monter en fonction de l'appartenance des utilisateurs à un groupe AD.
Vous avez une idée de comment je peux tester l'appartenance de l'utilisateur qui execute le script à un group AD ?
 
J'arrive à listes les groupes de mon AD, mais pas à lister les utilisateurs de ces groupes.
L'approche ne serait-elle pas de lister les groupes auxquels appartient un utilisateur ? Mais je ne sais pas comment faire.
 
Je vous met mons script, là où j'en suis :  
 

Code :
  1. On Error Resume Next
  2. Const ADS_SCOPE_SUBTREE = 1
  3. Set objConnection = CreateObject("ADODB.Connection" )
  4. Set objCommand =   CreateObject("ADODB.Command" )
  5. objConnection.Provider = "ADsDSOObject"
  6. objConnection.Open "Active Directory Provider"
  7. Set objCommand.ActiveConnection = objConnection
  8. objCommand.Properties("Page Size" ) = 1000
  9. objCommand.Properties("Searchscope" ) = ADS_SCOPE_SUBTREE 
  10. objCommand.CommandText = "SELECT distinguishedName FROM 'LDAP://OU=mesgroupes,dc=domaine,dc=fr' WHERE objectCategory='user' "
  11. Set objRecordSet = objCommand.Execute
  12. objRecordSet.MoveFirst
  13. Do Until objRecordSet.EOF
  14.     Wscript.Echo objRecordSet.Fields("distinguishedName" ).Value
  15.     objRecordSet.MoveNext
  16. Loop


 
Merci de vos avis  :jap:


Message édité par tuxbleu le 11-05-2011 à 12:41:16

---------------
Mon topic de vente - Mon feed-back
Reply

Marsh Posté le 11-05-2011 à 12:40:58   

Reply

Marsh Posté le 13-05-2011 à 15:05:27    

Citation :

Dim objRootLDAP, objGroup, objUser, objOU, objmemberOf  
Dim strOU, strUser, strDNSDomain, strLDAP, List, objADSysInfo,arr,intlength,intNamelength,strGroupName  
 
' Commands to bind to AD  
Set objRootLDAP = GetObject("LDAP://RootDSE" )  
Set objNetwork = CreateObject("Wscript.Network" )  
 
'trouver le DN de l'utilisateur  
Set objADSysInfo = CreateObject("ADSystemInfo" )  
strUser = objADSysInfo.UserName  
Set objUser = GetObject("LDAP://" & strUser)  
 
 
' Extract a list of Groups from memberOf  
objmemberOf  = objUser.GetEx("memberOf" )  
For Each objGroup in objmemberOf  
     List = List & objGroup & vbCr  
     arr=Split(List,"," )  
     intlength=Len(arr(0))  
     intNamelength=intlength - 3  
Next  
strGroupName= Right(arr(0), intNameLength)  
 
 
'Connecter un lecteur en fonction du groupe  
Select Case strGroupName  
        Case "Etudiant"  
            objNetwork.MapNetworkDrive "X:", "\\Serveur\Partage"  
         
        Case "Personnel"  
            objNetwork.MapNetworkDrive "X:", "\\Serveur\Partage"  
 
End Select  
     
WScript.Quit  


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 16-05-2011 à 10:35:14    

J'étais arrivé à un code comme celui-ci :
 

Code :
  1. Option Explicit
  2. 'on error resume next
  3. Dim objNetwork, objUser, CurrentUser, WshShell
  4. Dim strGroup, groupes, x, groupes2, x2
  5. 'Creation des objets
  6. Set WshShell = CreateObject("WScript.Shell" )
  7. Set objNetwork = CreateObject("WScript.Network" )
  8. Set objUser = CreateObject("ADSystemInfo" )
  9. Set CurrentUser = GetObject("LDAP://" & objUser.UserName)
  10. strGroup = Lcase(Join(CurrentUser.MemberOf,"###" ))
  11. groupes = Split(strGroup,"###" )
  12. for each x in (groupes)
  13. groupes2 = Split(x,",",2)
  14. wscript.echo groupes2(0)
  15. next


---------------
Mon topic de vente - Mon feed-back
Reply

Marsh Posté le 16-05-2011 à 10:53:58    

SuppotDeSaTante a écrit :

Citation :

Dim objRootLDAP, objGroup, objUser, objOU, objmemberOf  
Dim strOU, strUser, strDNSDomain, strLDAP, List, objADSysInfo,arr,intlength,intNamelength,strGroupName  
 
' Commands to bind to AD  
Set objRootLDAP = GetObject("LDAP://RootDSE" )  
Set objNetwork = CreateObject("Wscript.Network" )  
 
'trouver le DN de l'utilisateur  
Set objADSysInfo = CreateObject("ADSystemInfo" )  
strUser = objADSysInfo.UserName  
Set objUser = GetObject("LDAP://" & strUser)  
 
 
' Extract a list of Groups from memberOf  
objmemberOf  = objUser.GetEx("memberOf" )  
For Each objGroup in objmemberOf  
     List = List & objGroup & vbCr  
     arr=Split(List,"," )  
     intlength=Len(arr(0))  
     intNamelength=intlength - 3  
Next  
strGroupName= Right(arr(0), intNameLength)  
 
 
'Connecter un lecteur en fonction du groupe  
Select Case strGroupName  
        Case "Etudiant"  
            objNetwork.MapNetworkDrive "X:", "\\Serveur\Partage"  
         
        Case "Personnel"  
            objNetwork.MapNetworkDrive "X:", "\\Serveur\Partage"  
 
End Select  
     
WScript.Quit  



 
J'imagine qu'il me reste à boucler sur tous les éléments de "arr" pour avoir la liste de tous mes groupes ?


---------------
Mon topic de vente - Mon feed-back
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed