[VBS]Script mappage reseau

Script mappage reseau [VBS] - VB/VBA/VBS - Programmation

Marsh Posté le 23-01-2007 à 17:52:29    

Bonjour
Je vous expose un peu la situation
 
Je suis stagiaire, totalement debutant dans le VBS et on ma donné a faire un script VBS permettant de mappé les lecteur reseau appartenent a une UO spécifique dans l'active directory du windows server 2003
 
Exemple
Sous mon active directory , j'ai une UO "Compatable"
Dans cette UO comptable j'ai creer un Utilisateur Toto
Dans cette meme UO il y a un Lecteur partagée nommé L:
Je voudrais que lorsque Toto se connecte , le script ce lançe et cela va lui mappé le lecteur L:
 
Evidemment ce script doit etre polyvalent et marché sur TOUS les UO de mon active directory
 
JE part donc petit a petit et la premiere etape serait de recupéré l'uo dans laquelle est l'utilisateur qui vient de se logué
 
J'ai essayé ceci:
 

Code :
  1. Set objDSE = GetObject("LDAP://rootDSE" )
  2. set oConnection = CreateObject("ADODB.Connection" )
  3. oConnection.Provider = "ADsDSOObject"
  4. oConnection.Open "ADs Provider"
  5. ' filtre sur le login utilisateur
  6. ' -------------------------------
  7. sFilter = "(&(objectclass=user)(samaccountname=" & monUser & " ))"
  8. ' Définition des paramètres récupéré : ici DistinguishedName
  9. ' ----------------------------------------------------------
  10. sQuery = "<LDAP://" & objDSE.Get("defaultNamingContext" ) & ">;" & sFilter & ";distinguishedName;subtree"
  11. Set oRecordSet = oConnection.Execute(sQuery)
  12. usrDN = oRecordset.Fields("distinguishedName" ).value
  13. oConnection.Close
  14. ' Affichage de l'OU
  15. ' -----------------
  16. partie = split(usrDN,"," )
  17. chercheOU = Right(partie(1),Len(partie(1))-3)


 
Mais sa m'affiche cela:
 
http://img100.imageshack.us/img100/8381/erreur9ng.jpg
 
Bref , pourquoi ? je comprend pas trop le message d'erreur d'un côté  :sweat:  
 
AUssi , suis-je bien parti ? ou je me goure totalement en recuperant l'uo de l'util et il existe un moyen plus rapide ?  :whistle:  
Et aussi , si vous avez des idées sur la suite du script ???
 
Bref , je demande peut etre beaucoup je vous l'accorde...mais deja au moins récuperer l'UO de l'util courant sa serait deja un grand pas !!
 
Par avance merci !!
 
Et merci de m'avoir lu
 
En vous souhaitant une bonne journée/soirée , suivant l'heure de lecture :)  :)

Reply

Marsh Posté le 23-01-2007 à 17:52:29   

Reply

Marsh Posté le 24-01-2007 à 09:14:47    

Petite Info sup
J'ai fait le script sans aucun commentaire
et l'erreur se trouve sur cette ligne apparament:
 

Code :
  1. usrDN = oRecordset.Fields("distinguishedName" ).value


 
Si sa peut faire avançé la chose ....

Reply

Marsh Posté le 24-01-2007 à 10:56:26    

Bon j'ai avançé
J'arrive a recupéré le DN(distinguished name) de l'utilisateur courant !!
Manque plus qu'a le splitté et j'aurais le DN de l'uo de l'utilisateur !!
 
je vous poste mon nouveau code !
 
 
 

Code :
  1. Dim WshShell
  2. Dim objNet
  3. Dim objRootDSE
  4. Set WshShell = WScript.CreateObject("WScript.Shell" )
  5. Set objNet = WScript.CreateObject("WScript.Network" )' create network object for vars
  6. Set objRootDSE = GetObject("LDAP://rootDSE" )' bind to the rootDSE for portability
  7. strADsConfPath = "LDAP://" & objRootDSE.Get("configurationNamingContext" )' bind to configuration to get Domain Controllers later
  8. strRootDSE = objRootDSE.Get("defaultNamingContext" )' bind to the defaultContext for portability
  9. strUserName = UCase(objNet.UserName)' pull user name from environment variable
  10. msgbox GetDNUser(strUserName,"person" ),64,Wscript.ScriptName & " " & version
  11. Function GetDNUser(param1,param2)
  12.   Set objDSE = GetObject("LDAP://rootDSE" )
  13.   ON ERROR RESUME NEXT
  14.   Set objConnection = CreateObject("ADODB.Connection" )
  15.   objConnection.Open "Provider=ADsDSOObject;"
  16.   Set objCommand = CreateObject("ADODB.Command" )
  17.   objCommand.ActiveConnection = objConnection
  18.   objCommand.CommandText = "SELECT distinguishedName, Sn " & "FROM 'LDAP://" & objDSE.Get("defaultNamingContext" ) & "' " & "WHERE objectCategory='" & param2 & "' AND sAMAccountName='" & param1 & "' " & "ORDER BY sAMAccountName"
  19.   Set objRecordSet = objCommand.Execute
  20.   GetDNUser = objRecordSet.Fields("distinguishedName" )
  21.   objConnection.Close
  22.   if err.number <> 0 then
  23.     msgbox "ERREUR: le nom renseigné n'existe pas dans l'AD.",16,Wscript.ScriptName & " " & version
  24.     ERR.CLEAR
  25.     wscript.quit
  26.   end if
  27. End Function


 
 
Si vous avez une idée pour splitté la chose... je vous ecoute ^^

Reply

Sujets relatifs:

Leave a Replay

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