VBScript : Mapper des lecteurs réseau en fonction des groupes d'un utilisateur
Par Guillaume MAISON le lundi, juin 2007, 18:11 - Développement - Lien permanent
Il s'agit contourner les GPO - enfin une tellement infime partie que c'est même pas un contournement mais une autre manière de voir dira-t-on - d'un serveur Windows 2003 par l'intermédiaire d'un script. Celui-ci, sous réserve de modifications, peut être exécuté à l'ouverture d'une session
[vb]
' LecteurReseau.vbs
' Auteur : Guillaume Maison (gmaison@nauteus.com) http://www.infopartner.biz
' Version 1.0 - Mai 2007
' Basé sur :
' GroupMap.vbs
' VBScript to test group membership
' Script can be amended to actually MapNetworkDrive
' Author Guy Thomas http://computerperformance.co.uk/
' Version 3.3 - May 2006
' -----------------------------------------------------------------'
Option Explicit
Dim objNetwork, objUser, CurrentUser
Dim strGroup
' On initialise des variables constantes avec des valeurs.
' en l'occurence, pour chaque groupe on définit le groupe d'appartenance et le partage sur le serveur.
' attention, étant donné la fonction de détermination d'appartenance à un groupe, il faut préciser "cn=" avant le nom du groupe.
Const Compta_Group = "cn=compta"
Const Compta_Share = "Compta"
Const Direction_Group = "cn=direction"
Const Direction_Share = "Travail"
Const Commun_group = "cn=Commun"
Const Commun_Share = "Commun"
Const Users_Group = "cn=users"
Const users_Share = "Users"
' histoire de, on définit le nom du serveur où se trouvent les partages
Const strServer = "MONSERVEUR"
' la ligne ci-dessous peut être commentée pour être averti des erreurs éventuelles.
On Error resume next
' On crée des objets qui vont permettre de connaître le nom de l'utilisateur connecté
' et d'aller rechercher les groupes auxquels il appartient
Set objNetwork = CreateObject("WScript.Network")
Set objUser = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" & objUser.UserName)
strGroup = LCase(Join(CurrentUser.MemberOf))
' Maintenant on teste l'appartenance de l'utilisateur aux groupes ci-dessus
' et en fonction on ne fait rien ou bien on mappe un lecteur réseau.
' A noter que l'on pourrait tout aussi bien :
' - rattacher des imprimantes partagées spécifiques
' - exécuter une application spécifique au groupe
' - lire/écrire/modifier des fichiers XML voir Excel
' - etc.
' A noter également que les lecteurs créés ci-dessous ne sont pas permanents
If InStr(strGroup, lcase(compta_Group)) Then
' Les commentaires ci-dessous peuvent être retirés à des fins de déboggage
' WScript.Echo "Création du lecteur Compta"
objNetwork.MapNetworkDrive "Z:", "\\" & strServer & "\" & Compta_Share
End if
If InStr(strGroup, lcase(Direction_Group)) Then
' WScript.Echo "Création du lecteur Direction"
objNetwork.MapNetworkDrive "Y:", "\\" & strServer & "\" & Direction_Share
End if
If InStr(strGroup, lcase(Commun_Group)) Then
' WScript.Echo "Création du lecteur Commun"
objNetwork.MapNetworkDrive "X:", "\\" & strServer & "\" & Commun_Share
End if
If InStr(strGroup, lcase(Users_Group)) Then
' WScript.Echo "Création du lecteur Utilisateur"
objNetwork.MapNetworkDrive "U:", "\\" & strServer & "\" & Users_Share & "\" & objNetwork.UserName
End If
' et on a terminé
WScript.Quit