Que diriez vous d’un fichier Logon Script qui tient compte de la localisation géographique de l’utilisateur afin d’exécuter des commandes adaptées au site sur lequel il est situé?
Description
Nous 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’accès. Cette méthode est tout a fait adaptée à la gestion des accès aux partages par exemple.
Ainsi Patrick, comptable et nomade, aura toujours accès à son lecteur réseau dédié à la compatibilité car il est bien membre de son groupe “Comptable”.
Mais quand est il s’il souhaite imprimer ou encore accéder à Internet ? Ne serait il pas judicieux de lui mapper automatiquement une imprimante et de lui spécifier un serveur proxy correspondant à son site de connexion ?
La solution
C’est pour résoudre cette problématique liée à la localisation d’un utilisateur nomade que je vous propose une technique qui se base sur le réseau IP du site depuis lequel l’utilisateur se connecte.
Imaginons 2 agences d’une même société, même si elles sont dans un même réseau, elles auront certainement un sous réseau différent, par exemple 192.168.14.x et 192.168.15.x
Et bien il est possible en VBScript d’établir des conditions qui vont se baser sur ces adresses !
Ainsi à l’exécution du script l’adresse IP de Patrick, 192.168.15.25, va être splittée en 4 dans un tableau, le séparateur étant le “.”
Vous avez compris que c’est le troisième champ de l’adresse (ici 14 ou 15) qui va différencier les 2 agences, c’est donc la dessus que tout va se jouer ;-).
Un exemple !
Dans la code suivant imaginons que Patrick s’est vu affecté l’adresse IP 192.168.15.25. Tout d’abord cela signifie qu’il est localisé sur le site ayant 192.168.15.x comme sous-réseau. Patrick va donc répondre à la condition correspondant au “case = 15” du code suivant. L’imprimante PRINTSHARE2 va être mapper sur sa machine et le proxy 192.168.15.200 va lui être attribuer.
Le code
On Error Resume Next Dim ArrayIP strComputer = "." Set objNetwork = WScript.CreateObject("Wscript.Network") Set objWMIService = GetObject( _ "winmgmts:\\" & strComputer & "\root\cimv2") Set IPConfigSet = objWMIService.ExecQuery _ ("Select IPAddress from Win32_NetworkAdapterConfiguration Where IPEnabled = True") For Each IPConfig In IPConfigSet ArrayIP = Split (IPConfig.IPAddress(0), ".") Next If ArrayIP(0)=192 Then If ArrayIP(1)=168 Then Select Case ArrayIP(2) Case "14" objNetwork.AddWindowsPrinterConnection("\\SERVEUR1\PRINTERSHARE1") objNetwork.SetDefaultPrinter("\\SERVEUR1\PRINTERSHARE1") WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\AutoConfigURL", "http://192.168.14.200/web1.pac" WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable", "00000000" WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride", "" Case "15" objNetwork.AddWindowsPrinterConnection("\\SERVEUR2\PRINTERSHARE2") objNetwork.SetDefaultPrinter("\\SERVEUR2\PRINTERSHARE2") WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\AutoConfigURL", "http://192.168.15.200/web2.pac" WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable", "00000000" WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride", "" End Select End If End If