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

  FORUM HardWare.fr
  Windows & Software

  Script vbs pour mapper des lecteurs réseaux AD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Script vbs pour mapper des lecteurs réseaux AD

n°2647547
cmoa2
Posté le 23-02-2007 à 09:35:38  profilanswer
 

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
mood
Publicité
Posté le 23-02-2007 à 09:35:38  profilanswer
 

n°2647583
SuppotDeSa​Tante
Aka dje69r
Posté le 23-02-2007 à 10:32:22  profilanswer
 

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 ?

n°2647615
cmoa2
Posté le 23-02-2007 à 11:14:32  profilanswer
 

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
n°2647829
cmoa2
Posté le 23-02-2007 à 15:14:17  profilanswer
 

up :o

n°2652852
Madoo
Posté le 02-03-2007 à 14:29:09  profilanswer
 

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 ?

n°2971684
podeniak
Posté le 02-12-2010 à 11:33:20  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software

  Script vbs pour mapper des lecteurs réseaux AD

 

Sujets relatifs
Script pour creation de lecteur reseau par utilisateurproblème entre mes lecteurs video
Script dos de backuputilitaire lecteurs de news
forme équipements reseaux réels pour visio?Connexion automatique des lecteurs réseaux au lancement de Windows
Plus de sujets relatifs à : Script vbs pour mapper des lecteurs réseaux AD


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