Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2768 connectés 

 


Dernière réponse
Sujet : Script vbs pour mapper des lecteurs réseaux AD
podeniak 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


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
podeniak 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

Madoo 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 ?
cmoa2 up :o
cmoa2 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 !
SuppotDeSaTante 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 ?
cmoa2 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 !

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)