Un fichier Logon Script qui s’adapte aux groupes utilisateurs

Scripting

11 June 2008

Tags: Création de script, Script

L’utilisation d’un fichier Logon Script peut permettre de réaliser des choses 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 mapper sur la ressource \\SERVEUR\PartageCompta et un script AuditCompta.vbs va être exécuter parallèlement au Logon Script.

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 mapper 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")

'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 est très performante et devient vite indispensable. Vous pouvez imaginez une multitude d’utilisation avec ce type de condition par groupe d’appartenance.

Cette technique est particulièrement adaptée à la gestion des partages utilisateurs, puisque elle va faciliter vos migrations de fichiers. En effet si vous décider 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.

9 Responses to “Un fichier Logon Script qui s’adapte aux groupes utilisateurs”

  1. YannicK says:

    Parfait, il manque juste une ligne:

    Set objNetwork = WScript.CreateObject(“WScript.Network”)

    Le script devient :

    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”)

    ……………….

    Merci beaucoup pour ce script !

  2. jm says:

    bonsoir

    j’ai essayer ce script mais aucun lecteur ne monte et quand je l’exécute dans une commande “cmd” rien ne ce passe pouvez vous m’aidé ?

    Merci

  3. olivier H says:

    Bonjour

    Peut on adapter le script par rapport aux groupes machines.

    Merci d’avance

  4. [...] est fréquemment utilisée et devient très vite indispensable. Il est ainsi possible de mapper un lecteur réseau sur le poste d’un utilisateur selon l’appartenance de ce dernier à un…, de spécifier la page par défaut du navigateur de l’utilisateur, d’installer un programme ou [...]

  5. Thomas G says:

    Ca marche pas…. C'est bizarre d'ailleurs

  6. [...] avons vu dans un article précédent qu’il était possible d’adopter une stratégie de Logon Script selon l’appartenance d’un utilisateur à un groupe d&#821…. Cette méthode est tout a fait adaptée à la gestion des accès aux partages par [...]

  7. Mike says:

    Merci pour cet article, ca fonctionne parfaitement!

  8. [...] est fréquemment utilisée et devient très vite indispensable. Il est ainsi possible de mapper un lecteur réseau sur le poste d’un utilisateur selon l’appartenance de ce derni…, de spécifier la page par défaut du navigateur de l’utilisateur, d’installer un [...]

Leave a Reply