> Tech > Ecrire un script FinalSetup.vbs

Ecrire un script FinalSetup.vbs

Tech - Par iTPro - Publié le 24 juin 2010
email

  Si vous aimez les fichiers batch, vous aimerez le scripting WSH. WSH est un interpréteur (moteur) de script intégré dans Win2K et Win98. Vous pouvez l'installer sur NT 4.0 et aussi sur Win95. L'interpréteur WSH reconnaît les commandes WSH, VBScript et Jscript (la version Microsoft de JavaScript). On peut utiliser

le scripting WSH pour manipuler le système de fichiers, automatiser les applications desktop, gérer un système Microsoft SQL Server et bien plus. Le scripting WSH est facile à  apprendre : il suffit de disposer d’un éditeur de texte et d’un ordinateur avec WSH installé. Le site Microsoft Windows Script Technologies Web (http://msdn.microsoft.com/scripting) contient beaucoup d’informations de téléchargement et l’encadré  » Ressources connexes  » contient des articles intéressants sur le sujet.

  J’ai utilisé WSH et VBScript pour écrire le script FinalSetup.vbs, présenté dans le listing 1. Observez que j’aime beaucoup les espaces blancs et de généreux commentaires dans un script. Les commentaires rendent un script plus facile à  lire et permettent de savoir ce qu’il accomplit, plusieurs mois après. Il m’arrive même de conserver, mais en le commentant, le code de débogage ajouté lorsque j’ai écrit et testé le script.

  FinalSetup.vbs effectue les dernières étapes du processus de configuration avant que l’installateur ne remette l’ordinateur à  l’utilisateur final. Le code confirme que la personne exécutant le script est enregistrée comme Administrator et que l’ordinateur a rejoint le domaine. Le script ajoute ensuite le groupe global WEBDEV au groupe local Administrators sur l’ordinateur, pour que les développeurs Web puissent installer le logiciel et configurer leurs ordinateurs. Les deux premières instructions du script sont très importantes et doivent se trouver dans tous les scripts que vous écrivez. L’instruction OPTION EXPLICIT demande que vous déclariez les variables avant de pouvoir les utiliser, ce qui évite des erreurs dans vos scripts. Déclarer des variables est facultatif dans VBScript. Cependant, si vous n’utilisez pas OPTION EXPLICIT, une erreur typographique dans un nom de variable aura pour effet de créer une nouvelle variable. Une telle erreur est peut-être facile à  détecter si le script est simple, mais pas s’il contient des centaines de lignes. L’instruction ON ERROR RESUME NEXT empêche le script de s’arrêter quand il rencontre une erreur. Cette instruction a pour objet d’ignorer les erreurs, tout en vous permettant de les traiter élégamment afin qu’elles ne soient pas fatales pour le script.

  La section suivante de FinalSetup.vbs déclare les variables. On peut placer toutes les variables sur la même ligne, séparées par des virgules, ou bien sur des lignes séparées, comme je l’ai fait. Un nom de variable doit commencer par une lettre et peut comporter jusqu’à  255 caractères : lettres, chiffres et traits de soulignement (_). Il est habituel d’utiliser un préfixe d’une lettre minuscule pour indiquer le type de données (objet, chaîne, entier, par exemple) stocké dans la variable. La section suivante du script déclare les constantes, similaires aux variables, à  cela près qu’on ne peut pas modifier leurs valeurs après les avoir déclarées. Le script utilise trois constantes : GLOBAL_GROUP, LOCAL_GROUP et DOMAIN.

  Pour travailler concrètement, un script a besoin d’utiliser des objets qui ont des méthodes (les fonctions qu’un objet effectue) et des propriétés (caractéristiques). Avant qu’un script puisse utiliser un objet, il doit l’instancier (le créer). L’instanciation d’un objet le charge en mémoire et l’enregistre. En scripting WSH, on utilise la fonction Wscript.CreateObject() pour instancier un objet. FinalSetup.vbs utilise plusieurs objets qui sont intégrés dans WSH.

  La section suivante de Final Setup.vbs crée deux objets : Network (Wscript.Network) et Shell (Wscript.Shell). L’objet Network permet au script de se connecter aux ressources du réseau. L’objet Shell permet au script d’exécuter un  » exécutable « , de manipuler le registre, de lire les variables d’environnement, de créer des raccourcis et d’effectuer plusieurs autres fonctions. Dans chaque cas, le script stocke l’objet créé dans une variable (oWshNet et oWshShell, respectivement) et utilise celle-ci pour accéder aux méthodes et propriétés de l’objet.

  L’Administrator local doit être connecté (logged on) à  l’ordinateur pour que le script puisse mener à  bien ses tâches. Pour confirmer que l’utilisateur est l’Administrator local, le script obtient la valeur de la propriété Username de l’objet Network créé précédemment et stocke la valeur dans la variable sUser. Le script extrait le nom de l’ordinateur de la propriété Computername et le stocke dans la variable sCompName. Ensuite, le script utilise la fonction UCASE() pour convertir la valeur de sUser en majuscules et compare la valeur convertie à  ADMINISTRATOR. Si la valeur de sUser n’est pas égale à  ADMINISTRATOR, le script affiche un message d’erreur et sort.

  Quand l’utilisateur est l’Administrator, le script continue à  l’étape suivante, chargée de s’assurer que l’ordinateur a rejoint le domaine. Premièrement, la méthode oWshShell.RegRead lit la sous-clé de registre HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows NT\ CurrentVersion\Winlogon\DomainCache\GONDOR et stocke la valeur dans la variable sInDomain.

   Ensuite, le script procède à  deux vérifications. Premièrement, il vérifie si sInDomain est nul (c’est-à dire si la sous-clé du registre est vide ou non). Si oui, le script affiche un message d’erreur et sort. Deuxièmement, le script vérifie l’erreur fatale -2147024894, qui se produit si la sous-clé du registre n’existe pas et sort en bon ordre si l’erreur s’est produite. Si la sous-clé du registre n’était pas présente et si le script ne comportait pas l’instruction ON ERROR RESUME NEXT que j’ai mentionnée précédemment, l’utilisateur verrait un message d’erreur.

  Ensuite, le script ajoute le groupe global du domaine NT 4.0 au groupe local Administrators sur l’ordinateur. Pour cela, le script utilise d’abord ADSI (Active Directory Service Interfaces) pour se connecter à  la base de données SAM sur l’ordinateur local. Le script crée l’objet oGroup en utilisant la fonction GetObject() de l’ADSI pour se relier au fournisseur de WinNT de l’ADSI.

  Après avoir établi la connexion avec le fournisseur de WinNT, le script utilise la méthode IsMember de l’objet oGroup pour vérifier que le groupe global du domaine (GLOBAL_GROUP) est un membre du groupe local Administrator. Si ce n’est pas le cas, la valeur de la variable sMember est FALSE (0) et le script utilise la méthode oGroup.Add pour ajouter le groupe global au groupe local. Le script revérifie la valeur de sMember pour s’assurer qu’elle est TRUE (-1) puis utilise la méthode oWshShell.Popup pour afficher un message d’état et poursuit son exécution après une pause de 5 secondes.

  Nous utilisons SMS pour que la dernière action du script soit d’installer le logiciel client SMS sur l’ordinateur. Après avoir affiché un message informatif, le script utilise la méthode oWshNet.MapNetworkDrive pour associer (mapper) le lecteur N de l’ordinateur au serveur SMS et à  la méthode oWshShell.run pour démarrer smsman.exe. Quand smsman.exe se termine, le script se déconnecte du lecteur de réseau et affiche un message final.

Téléchargez gratuitement cette ressource

Endpoint Security : Etude IDC Enjeux & Perspectives

Endpoint Security : Etude IDC Enjeux & Perspectives

Quel est l'état de l'art des solutions de Endpoint Security et les perspectives associées à leur utilisation ? Comment garantir la sécurité des environnements sensibles en bloquant au plus tôt les cyber attaques sophistiquées, avant qu’elles n'impactent durablement vos environnements de travail ?

Tech - Par iTPro - Publié le 24 juin 2010