Avant-propos

Visual Basic Scripting Edition, (VBScript en abrégé), est un langage de programmation dérivé de Visual Basic for Applications  (VBA), lui-même issu de Visual Basic.
Il est destiné à la conception de scripts, c'est à dire des suites de commandes, destinés à être utilisés dans différents environnements :

VBScript est utilisable sous toute plate-forme Windows 32 bits (Windows 95,98, ME, NT4, 2000, XP)

Il faut noter que :

Ce "croisement" de concepts est souvent source de confusions!

Téléchargements

L'ensemble est téléchargeable gratuitement depuis le site Microsoft,

http://www.microsoft.com/downloads/release.asp?releaseid=33157

mais il est très fréquemment restructuré, si bien que certains liens cités ici peuvent ne pas aboutir.
En conséquence, je l'ai mis à disposition sur mon site :

Versions

Sites
VBscript

Windows

Microsoft JCB
5.5 95 scr55fr.exe scr55fr.exe
5.6 98, ME, NT 4 scr56fr.exe scr56fr.exe
2000 scriptfr.exe scriptfr.exe
Documentation scd56fr.exe scd56fr.exe

 
  • Les utilisateurs de Windows 95 doivent avoir installé la version OSR2 ou avoir installé Internet Explorer 4.0 ou supérieure pour que ces fichiers fonctionnent correctement. Les utilisateurs de Windows 95 sans Microsoft Internet Explorer 4.0 ni OSR2 devront installer DCOM avant d'utiliser ces fichiers. Pour installer les composants DCOM, se reporter à la page de téléchargement DCOM.
     
  • Les utilisateurs de Microsoft Windows NT 4.0 doivent avoir installé Internet Explorer 3.02 ou 4.0 au minimum avant d'utiliser ces fichiers.
     
  • On peut accroître notablement les possibilités des scripts VBS à l'aide de contrôles ActiveX, existants ou créés par l'utilisateur.
    Cela est possible, par exemple, à l'aide de Visual Basic Control Creation Edition (VBCCE), qui est une version limitée de Visual Basic (elle ne permet de réaliser que des Contrôles ActiveX et non pas des exécutables), mais est entièrement GRATUITE!
    L'ensemble est téléchargeable gratuitement depuis le site Microsoft :

    mais il est très fréquemment restructuré, si bien que certains liens cités ici peuvent ne pas aboutir.
    En conséquence, je l'ai mis à disposition sur mon site :

    Noms Tailles
    (ko)
    Sites
    Microsoft JCB
    VBCCE Visual Basic Control Creation Edition 7304 vb5ccein.exe vb5ccein.exe
    Documentation Visual Basic Online Reference 2841 ccehelp.exe ccehelp.exe
    Creating ActiveX Controls 983 ccedoc02.exe ccedoc02.exe
    Supporting Information 743 ccedoc03.exe ccedoc03.exe
    Creating CAB Files for Downloading 252 ccedoc04.exe ccedoc04.exe
    More About Visual Basic 625 ccedoc05.exe ccedoc05.exe
    Windows95 Common Controls 364 ccedoc06.exe ccedoc06.exe
    TOTAL 13113  


    Exécuter successivement chaque exécutable, tout va se faire automatiquement

WMI

Certains scripts VBS peuvent faire appel à WMI (Windows Management Instrumentation).

C'est un fournisseur d'informations diverses sur une machine locale ou distante (matériel - BIOS compris -, disques, mémoire, comptes, réseau, ...), constitué d'une (gigantesque) base de données standardisée (gérée par le processus WinMgmt.exe).

Elle repose sur un modèle commun CIM  (Common Information Model) lequel est un standard, créé par le DMTF (Distributed Management Task Force), organisme indépendant de Microsoft (mais Microsoft en fait partie, au même titre que 3Com, AMD, Cisco, Compaq, DELL, Fujitsu, HP, IBM, Intel, Nec, Novell, Oracle, SAP, Siemens, Sun, Symantec, ...).

A l'aide de scripts ou programmes écrits en VBScript, Jscript, Perl, VB, C#, ..., on peut ainsi accéder à n'importe quelle information concernant le système (local ou distant), sans devoir aller explorer la Base de Registres ou autre source.

WMI ne remplace pas la BDR, mais va chercher dedans la plupart de ses informations. Le "plus" est que la collecte d'informations est standardisée, essentiellement sous la forme de requêtes WQL (Windows Management Instrumentation Query Language, analogue à SQL) .

WMI est installé d'origine sous Windows ME, Windows 2000, Windows XP et Windows 2003.

Dans le cas de Windows 95/98/98SE et Windows NT4, il faut l'installer séparément, à partir d'un fichier auto extractible téléchargeable librement sur  le site Microsoft :

Pour ceux qui veulent aller plus loin dans la connaissance de WMI, un outil (fortement documenté, y compris en français) est le WMI SDK, qui se présente sous la forme d'interface WEB, et permet d'explorer toutes les classes (leurs fonctionnalités et leurs contenus)
 
La navigation pour l'obtenir est assez complexe :

  1. Cliquer sur le lien WMI SDK situé à gauche dans cette page.
  2. Quand on ouvre ce lien, on voit un autre lien "Install this SDK!" (dont l'URL ne s'affiche pas dans la barre d'état) et qui affiche une page de confirmation.
  3. Là on trouve un bouton "Continue" , qui va à son tour afficher un dialogue d'agrément (!!)
  4. Puis après acceptation, cela affiche une boite dialogue dans laquelle on va indiquer le dossier de téléchargement (il y en a un qui est choisi par défaut, que l'on peut modifier)
  5. On appuie ensuite sur "Continue" , ce qui provoque ... l'affichage d'une nouvelle boite de dialogue "Installation status" !
  6. On appuie alors sur "Install now" et cela déclenche (enfin!) le téléchargement.

    cet ensemble est très volumineux : 86 Mo, et  l'installation requise est de 356 Mo !

Exemples de scripts (Microsoft)

Microsoft met à disposition sur son site un certain nombre de scripts VBS, faisant appel ou non à WMI :

Nom Description WMI Tailles
(ko)
Sites
Microsoft JCB
System Administration Scripting Guide Fichier d'aide compilé contenant des scripts d'administration

1643 script_center_repository.exe script_center_repository.exe
ScriptOmatic Générateur automatique de scripts

101 scriptomatic.exe scriptomatic.exe
ADSI Scriptomatic Générateur automatique de scripts d'administration ADSI

170 EZADScriptomatic.exe EZADScriptomatic.exe

Consulter également le Script Center qui contient un très grand nombre de scripts de toute nature.

Schéma de principe



L'environnement WSH supporte différents langages de scripts :

On ne trouvera sur ce site que ce qui concerne VBScript

 

Les types de fichiers de WSH

Les principaux types de fichiers concernés par WSH sont les suivants :

.VBS Fichier source en VBScript
.VBE Fichier source en VBScript codé (non éditable)
.JS Fichier source en JScript
.JSE Fichier source en JScript codé (non éditable)
.WSF Fichier pouvant contenir plusieurs sources en différents langages. Des balises XML indique le langage de chaque source 
.WSC Fichier source Windows Script Components
.WSH Feuille de propriétés d'un fichier script

Création d'un fichier de propriétés (.WSH) relatif à un fichier script :

Afficher les propriétés du fichier script dans l'explorateur de Windows

Sélectionner l'onglet "Script"

Modifier le cas échéant les champs :
  • "Arrêter le script ..."
  • "Afficher le logo..."

et appuyer sur OK.

Un fichier à extension .WSH est alors créé.
C'est un fichier texte qui contient :
  • Le chemin complet du fichier script d'origine
  • L'options éventuelle de durée maximale du script 
  • L'options éventuelle d'affichage du logo (bannière)

L'exécution du fichier .WSH provoquera l'exécution du fichier script.

Les interpréteurs

Un script écrit en VBS est un fichier de commandes. Il doit être interprété pour être utilisable.
Il existe 2 interpréteurs : CSCRIPT.EXE et WSCRIPT.EXE

Ils ont tous les deux les mêmes capacités d'interprétation, la différence résidant uniquement dans l'interface.

Interpréteur Principe Utilisation Exemple
CSCRIPT.EXE Opère en mode texte.
Les messages apparaissent 
dans une Console.
A l'intérieur de fichiers 
de commandes (.bat ou .cmd)
traitements automatiques,
sans intervention
WSCRIPT.EXE Opère en interface graphique.
Les messages apparaissent 
dans des fenêtres (Window) 
Lorsque qu'une interaction avec
l'utilisateur est nécessaire

Par défaut, tout fichier script VBS est associé à l'un de ces deux interpréteurs. 
Ainsi pour exécuter un script il suffit, au choix, de :

Au départ, cet interpréteur est WSCRIPT (mode fenêtré).

En mode ligne de commande, on peut imposer l'interpréteur à utiliser en l'indiquant explicitement :

H:\WSH>wscript users.vbs
ou
H:\WSH>cscript users.vbs

On peut changer d'interpréteur par défaut par l'une de ces commandes :

WSCRIPT //H:CScript
CSCRIPT //H:CScript
Définit CScript.exe comme interpréteur par défaut
WSCRIPT //H:WScript
CSCRIPT //H:WScript
Définit WScript.exe comme interpréteur par défaut

Cette commande n'est active que pour la session en cours. Si on veut la rendre définitive (jusqu'à un prochain changement), il faut ajouter le commutateur //S 

WSCRIPT //H:CScript //S
(Rend permanent l'utilisation de CSCRIPT comme interpréteur par défaut)

En particulier on aura intérêt à utiliser CSCRIPT quand le script affiche successivement beaucoup de messages, afin d'éviter l'apparition d'un grand nombre de boites de messages, qui exigent l'appui sur un bouton pour les fermer.

Exemple :
Script d'affichage de la liste des utilisateurs d'une machine (user.vbs):

  
Résultats avec CSCRIPT Résultats avec WSCRIPT

Options des interpréteurs :

//B  Mode "batch" . Supprime l'affichage des invites (commande wscript.echo) et des erreurs de scripts
//D  Active le déboguage
//E:engine 
Utilise le moteur spécifié pour l'exécution de script. (Wscript et Cscript font appel à un moteur propre à chaque type de fichier, VBS n'étant pas le seul langage supporté. On peut définir un moteur spécifique)
//H:CScript  Remplace l'environnement d'exécution de scripts par défaut par CScript.exe
//H:WScript  Remplace l'environnement d'exécution de scripts par défaut par WScript.exe (defaut)
//I  Mode interactif (par défaut, contraire de l'option //B)
//Job :xxxx  Exécuter une tâche repérée par son identifiant (ID) dans un fichier .WS
//Logo  Afficher la bannière de WSH (défaut) (ne concerne que Cscript)
//Nologo  Supprime l'affichage de la bannière de WSH (ne concerne que Cscript)
//S  Enregistrer les options de ligne de commande actuelles pour cet utilisateur
//T:nn  Temps maximal en secondes autorisé pour l'exécution d'un script
//X  Exécute un script dans le débogueur
//U  Utilise Unicode pour les E/S de la console

Documentations et liens

(liste non exhaustive!)

  1. Le site de Microsoft
  2. Les autres sites
  3. Les groupes de discussions
  4. Les livres (mise à jour : novembre 2004)
      Titre Auteur Langue Éditeur ISBN Nbre
    pages
    Commentaires (personnels) CDROM
    1 Windows Script Host Dino Esposito anglais WROX  1861002653 370 Agréable, beaucoup d'exemples (on peut les télécharger sur leur site : http://www.wrox.com)  
    2 Windows Script Host Thomas Fredell anglais SAMS publishing 067231374 600 Assez pointu, très tourné "administration" (p.ex. comment gérer les comptes sous NT, utiliser l'Active Directory sous W2k,...)  
    3 Windows Script Host Tim Hill anglais MacMilan Technical Publishing 1578701392 430 Assez bien structuré.  
    4 Windows Script Host Tim Hill
    traduit par
    Daniel Lambert
    français  Campus Press 2744008524 435 Traduction du précédent  
    5 VBScript toute une équipe
    (11!)
    anglais WROX  1861002718 810 Très complet, bien fait, dédié uniquement à VBSCRIPT  
    6 Windows Script Host 2.0 Developer's Guide Günter Born anglais Microsoft Press 0735609314 502 Très complet. Beaucoup de trucs et astuces. 
    7 Learning VBSCRIPT Paul Lomax anglais O'Reilly 1565922476 614 Très complet et sérieux.
    8 VBScript Pocket Reference Paul Lomax,
    Matt Childs
    Ron Petrusha
    anglais O'Reilly 0596001266 126 Ouvrage de poche, aide-mémoire de VBScript  
    9 VBScript - précis & concis Paul Lomax
    traduit par
    Jean-Claude Bellamy
    français O'Reilly 2-84177-152-0 120 Traduction du précédent  
    10 Windows Scripting Secrets Tobias Weltner anglais IDG BOOKS 0-7645-4684-8 751 Très complet, très documenté, beaucoup d'exemples avancés, de contrôles ActiveX (avec les sources)
    Le CDROM qui contient tous les scripts et contrôles ActiveX décrits dans l'ouvrage et en plus l'intégralité des chapitres sous la forme de fichiers au format PDF.
    11 Developping WMI solutions Craig Tunstall
    Gwyn Cole
    anglais

     

    Addison-Wesley 0-201-61613-0 789 Ouvrage très approfondi sur WMI  
    12 Windows 2000 Scripting Guide Microsoft Windows Resource Kit Scripting Team anglais Microsoft Press 0-7356-1867-4

    1287

    Ouvrage très complet dédié aux scripts d'administration
    13 Windows Scripting Host Claude Bernardini français ENI 2-7460-2503-5

    349

    Orienté administration. Sors des "sentiers battus" (bases de données, COM, WMI, Active Directory). Très clair.