Script vbs pour mapper des lecteurs réseaux AD

Script vbs pour mapper des lecteurs réseaux AD - Windows & Software

Marsh Posté le 23-02-2007 à 09:35:38    

Bonjour  :)  
Je débute en vbs et je cherche à créer un script d'ouverture de session qui me permette de mapper un lecteur réseau à un utilisateur en fonction du groupe auquel il appartient dans Active Directory. En m'inspirant de tout ce que j'ai vu, j'obtiens un début de code qui ressemble à ceci :
 
 
 
Dim objRootLDAP, objGroup, objUser, objOU, objmemberOf
Dim strOU, strUser, strDNSDomain, strLDAP, strList, objADSysInfo,arr,intlength,intNamelength,objRecordSet
 
' Commands to bind to AD and extract domain name
Set objRootLDAP = GetObject("LDAP://RootDSE" )
strDNSDomain = objRootLDAP.Get("DefaultNamingContext" )
 
'find the user DN
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  
   strList = strList & objGroup & vbCr
Next
WScript.Echo strList

 
 
 J'arrive donc à récupérer le username de l'utilisateur puis à trouver les groupes auxquels il appartient. Mais voila, l'affichage de mes groupes se présente ainsi : CN=NomGroupe,CN=users,DC=test,DC=fr . Je voudrais à partir de ceci récuper seulement le nom du groupe pour pouvoir ensuite mapper les lecteurs en faisant un "case NomGroupe=Etudiant..."  
 
Si vous pouviez me donner une petite piste car là je suis un peu bloquée  :pt1cable:  
 
Ou peut être auriez vous une meilleure idée pour connecter des lecteurs réseaux aux utilisateurs...une solution plus simple ou plus efficace qu'un script vbs à laquelle je n'aurai pas pensé... :)  Merci !


Message édité par cmoa2 le 23-02-2007 à 11:33:05
Reply

Marsh Posté le 23-02-2007 à 09:35:38   

Reply

Marsh Posté le 23-02-2007 à 10:32:22    

Je ne m'y connais pas trop la dedans, mais logiquement si il te renvoit qqchose sour la forme "CN=NomGroupe,CN=users,DC=test,DC=fr" tu dois bien pouvoir avec des fontions sur les chaines ne recuperer que la partie qui t'interresse non ?

Reply

Marsh Posté le 23-02-2007 à 11:14:32    

Tout à fait c'est bien le problème que j'avais... Mais j'ai enfin réussi ! Après de nombreuses recherches et de nombreux essais je suis parvenue à ce que je voulais :)  
Je donne mon script pour ceux qui pourraient en avoir besoin :
 
 
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

 
Il fonctionne et mappe les lecteurs en fonction du groupe de l'utilisateur ;)
 
Cependant, si vous pensez qu'une solution est meilleure que l'utilisation d'un script comme celui, faites m'en part ! :) Merci !


Message édité par cmoa2 le 23-02-2007 à 11:17:34
Reply

Marsh Posté le 23-02-2007 à 15:14:17    

up :o

Reply

Marsh Posté le 02-03-2007 à 14:29:09    

Up ! [:ass_kicker57]
 
Même cas que toi :p ceci dit en regardant ton script (malgres le fait que je n'y connaisse pas grand chose :p) il me semble que tu ne recupere qu'un seul nom de groupe, et donc, si ton utilisateur a plusieur groupes tu ne peux pas lui mapper tout les lecteurs dont il a besoin :o nan ?

Reply

Marsh Posté le 02-12-2010 à 11:33:20    

Bonjour,
 
Nickel ton script, je faisait du mappage avec kixtart sur mon domaine, sauf qu'avec les postes en win7, on a quelques difficultés... Et là ton script m'arrange carrément.
 
Par contre j'ai fais une petite modif, j'ai rajouté des lignes pour virer le lecteur existant, ca peut etre utile lors du changement du serveur de fichier.

Code :
  1. Dim objRootLDAP, objGroup, objUser, objOU, objmemberOf, FSO
  2. Dim strOU, strUser, strDNSDomain, strLDAP, List, objADSysInfo, arr, intlength, intNamelength, strGroupName
  3. ' Commands to bind to AD
  4. Set objRootLDAP = GetObject("LDAP://RootDSE" )
  5. Set objNetwork = CreateObject("Wscript.Network" )
  6. Set fso = CreateObject("Scripting.FileSystemObject" )
  7. ' Supression du lecteur V: Si il existe
  8. If FSO.DriveExists ("V:" ) Then
  9. objNetwork.RemoveNetworkDrive "V:", true, true
  10. End If
  11. 'trouver le DN de l'utilisateur
  12. Set objADSysInfo = CreateObject("ADSystemInfo" )
  13. strUser = objADSysInfo.UserName
  14. Set objUser = GetObject("LDAP://" & strUser)
  15. ' Extract a list of Groups from memberOf
  16. objmemberOf  = objUser.GetEx("memberOf" )
  17. For Each objGroup in objmemberOf 
  18.      List = List & objGroup & vbCr
  19.      arr=Split(List,"," )
  20.      intlength=Len(arr(0))
  21.      intNamelength=intlength - 3
  22. Next
  23. strGroupName= Right(arr(0), intNameLength)
  24. 'Connecter un lecteur en fonction du groupe
  25. Select Case strGroupName
  26.         Case "GG-3A"
  27.             objNetwork.MapNetworkDrive "V:", "\\SRV-2K3\PARTAGES$\COMMUNS\3EME\3A"
  28.        
  29.         Case "GG-3B"
  30.             objNetwork.MapNetworkDrive "V:", "\\SRV-2K3\PARTAGES$\COMMUNS\3EME\3B"
  31.  Case "GG-4A"
  32.   objNetwork.MapNetworkDrive "V:", "\\SRV-2K3\PARTAGES$\COMMUNS\4EME\4A"
  33.  Case "GG-4B"
  34.   objNetwork.MapNetworkDrive "V:", "\\SRV-2K3\PARTAGES$\COMMUNS\4EME\4B"
  35.  Case "GG-5A"
  36.   objNetwork.MapNetworkDrive "V:", "\\SRV-2K3\PARTAGES$\COMMUNS\5EME\5A"
  37.  Case "GG-5B"
  38.   objNetwork.MapNetworkDrive "V:", "\\SRV-2K3\PARTAGES$\COMMUNS\5EME\5B"
  39.  Case "GG-6A"
  40.   objNetwork.MapNetworkDrive "V:", "\\SRV-2K3\PARTAGES$\COMMUNS\6EME\6A"
  41.  Case "GG-6B"
  42.   objNetwork.MapNetworkDrive "V:", "\\SRV-2K3\PARTAGES$\COMMUNS\6EME\6B"
  43. End Select
  44.    
  45. WScript.Quit


 
J'ai mis en rouge les lignes que j'ai greffé.
En esperant que ca vous soit utile.
 
Podeniak


Message édité par podeniak le 03-12-2010 à 14:06:11
Reply

Sujets relatifs:

Leave a Replay

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