L’utilisation d’un fichier Logon Script conditionnel permet de réaliser des opérations d’administration très intéressantes. Nous allons voir dans cet article comment exécuter certaines actions selon l’appartenance d’un utilisateur à un groupe Active Directory!
Que fait ce script?
Dans cet exemple si l’utilisateur qui exécute le script appartient à un groupe nommé Groupe-Compatibilité-Siège un lecteur réseau U va être mappé sur la ressource \\SERVEUR\PartageCompta et un script AuditCompta.vbs va être exécuté.
Si l’utilisateur en revanche appartient au Groupe Groupe-Paye-Siège, 2 lecteurs U et V correspondants respectivement aux ressources \\SERVEUR\PartagePaye et \\SERVEUR\PartagePointages vont être mappés sur sa machine.
Voici le code …
On Error Resume Next 'Déclaration des variables' Dim objGroupList, objADObject, strGroup, objUser Set WshShell = WScript.CreateObject("WScript.Shell") Set WshVarEnv = WshShell.Environment("PROCESS") strNetBiosDomain = WshVarEnv.Item ("USERDOMAIN") strLogonServer = WshShell.ExpandEnvironmentStrings("%Logonserver%") strUserName = WshShell.ExpandEnvironmentStrings("%USERNAME%") Set objUser = GetObject("WinNT://" & strNetBiosDomain & "/" _ & strUserName & ",user") Set objNetwork = WScript.CreateObject("WScript.Network") 'Condition 1 : Si l'utilisateur appartient à "Groupe-Comptabilité-Siège" If IsMember("Groupe-Comptabilité-Siège") Then objNetwork.RemoveNetworkDrive "U:" objNetwork.MapNetworkDrive "U:" , "\\SERVEUR\PartageCompta" WshShell.run strLogonServer & "netlogon\AuditCompta.vbs" End If 'Condition 2 : Si l'utilisateur appartient à "Groupe-Paye-Siège" If IsMember("Groupe-Paye-Siège") Then objNetwork.RemoveNetworkDrive "U:" objNetwork.MapNetworkDrive "U:" , "\\SERVEUR\PartagePaye" objNetwork.RemoveNetworkDrive "V:" objNetwork.MapNetworkDrive "V:" , "\\SERVEUR\PartagePointages" End If 'Fin du script' WScript.quit 'Les 2 Fonctions de test d'appartenance aux groupes' Function IsMember(strGroup) If IsEmpty(objGroupList) Then Call ReadGroups End If IsMember = objGroupList.Exists(strGroup) End Function Sub ReadGroups Dim objGroup Set objGroupList = CreateObject("Scripting.Dictionary") objGroupList.CompareMode = vbTextCompare For Each objGroup In objUser.Groups objGroupList(objGroup.name) = True Next Set objGroup = Nothing End Sub
Et après ?
Cette technique de scripts conditionnels est très performante et devient vite indispensable. Elle est notamment particulièrement adaptée pour la gestion des partages utilisateurs au quotidien, et va faciliter vos migrations de fichiers lorsque vous changez de serveurs ou réorganisez les données. Si par exemple vous décidez de changer l’emplacement d’un partage,il suffira de changer le chemin indiqué dans le Logon Script et de demander aux utilisateurs du groupe de fermer et ré-ouvrir leur session pour que leur nouveau partage soit effectif.
Ca marche pas…. C'est bizarre d'ailleurs
Bonjour Thomas,
Peux tu préciser ton problème?
Merci pour cet article, ca fonctionne parfaitement!