in

Prisma Blogs

Sitio dedicado a la divulgación de conocimientos técnicos.

Javier Cimadom

Introducción a VBS (Visual Basic Script)

Introducción

 

Hace cuestión de unos días, un gran amigo mío se acercó y me comento que estaba escribiendo algunos artículos es un blog, luego de conversar un rato me preguntó - ¿Por qué no te ponés a escribir algo?- A lo que yo contesté -No sabría de qué escribir, vos sabés que los conocimientos que yo tengo los aprendí de la práctica y quizás no tengo los fundamentos teóricos para respaldar lo que digo-, pero bueno palabras van palabras vienen me convenció, así que decidí que mi primer artículo va a estar referido a una herramienta poderosísima de la cual muchos hablan y no muchos conocen: Visual Basic Script (VBS).

Lo que veremos en este documento es un repaso rápido de conceptos básicos, luego, lo ampliaré en futuros documentos.

 

¿Qué es VBS?

 

Para empezar vamos a comentar un poco qué es VBS y aunque parezca redundante, es un lenguaje de programación de scripts (o lenguaje de secuencias de comandos) que se ejecuta del lado del cliente y está basado en Visual Basic (por eso es que es tan popular). Tanto su sintaxis como la manera de trabajar están muy inspirados en él. Sin embargo, no todo lo que se puede hacer en Visual Basic lo podremos hacer en Visual Basic Script, pues este último es una versión reducida del primero.

 

Primeros pasos

 

Variables

 

Una variable es un puntero a una posición de memoria en donde se puede almacenar, leer o modificar un valor en el momento de ejecución. A diferencia de otros lenguajes, en VBS solo se pueden definir variables del tipo VARIANT, un tipo de contenedor que puede guardar casi cualquier tipo de dato (string, numeric, integer, etc).

En VBS no es necesario, pero si recomendable, definir la variable (siempre y cuando no utilicemos el comando Option Explicit al principio del código que nos obliga a definir todas las variables). Para definir una variable basta solo declararla de la siguiente manera:

 

Dim NombredeVariable

 

O, para definir varias a la vez:

 

Dim Variable1, Variable2, Variable3

 

Antes de definir una variable hay que tener en cuenta que:

·          Las variables no son Case Sensitive (no toma en cuenta las mayúsculas ni las minúsculas)

·          Debe comenzar con un carácter alfabético.

·          No puede contener un punto.

·          No debe superar los 255 caracteres.

·          No puede llevar tildes o acentos o cualquier otro carácter no anglosajón.

·          No puede ser una palabra reservada (If, Dim, Wscript, etc)

 

Ejemplo:

 

Option Explicit                            ‘Obligo a que todas las variables estén definidas

Dim Texto                                 ‘Defino la variable Texto

Texto = “Hola Mundo”                 ‘Asigno a la variable Texto el string “Hola Mundo”

Wscript.echo Texto                     ‘Muestro por pantalla el contenido de Texto

 

Mas adelante veremos el concepto de vectores y matrices.

 

Constantes

 

Las constantes son como las variables, pero con la diferencia que el valor nunca cambia. Para definir una constante realizamos lo siguiente:

Const Numero = 123                                          ‘Al igualarlo a números, la constante es numérica

Const Texto = "Esto es texto y va entre comillas"  ‘Utilizo el caracter “ para simbolizar tipo texto

Const Fecha = #12-01-07#                                 ‘Utilizo el caracter # para simbolizar tipo fecha

 

Comentarios

Como habrán visto en los ejemplos, el apóstrofe se utiliza para realizar comentarios. Aunque parezca inútil, es importantísimo agregar los comentarios de cada procedimiento o función para que en un futuro cuando revisemos nuestro scripts, no tengamos que estar un rato largo mirando una serie de comandos para ver qué quisimos hacer.

 

¿Cómo ejecuto un script?

Existen dos posibles formas de ejecutar un VBS, la primera es utilizando el comando CScript, ejemplo CScript NombreDelScript.vbs. Este comando ejecuta el script en modo consola (no muestra popups sino que lo muestra dentro de un CMD). La otra forma es utilizando el comando WScript, esta sí muestra los pupups de resultado y es la forma que se ejecuta cuando hacemos “Doble clic” en el archivo.

 

Operadores – Bucles – Procedimientos y funciones

 

Si bien al principio de este documento me pareció interesante dar a conocer algunos conceptos muy básicos de programación, me parece que ahondar en el tema de los operadores, los bucles, los procedimientos y las funciones, hará que este documento se muy extenso, así que lo dejaré para la investigación de cada uno de ustedes. Igualmente si alguien tiene una consulta en particular, pueden postearla acá o enviarme un mail (JCimadom@Prisma.cc).

 

WMI – El Poder del Script

 

Antes de seguir avanzando con VBS, me parece apropiado nombrar a WMI (Windows Management Instrumentation). WMI nació por la necesidad de los administradores de red de manejar de manera confiable y sencilla estructuras de redes grandes y complejas

Definición de Microsoft de WMI:

“WMI se basa en la iniciativa para la administración de empresas a través del  Web (WBEM, Web-based Enterprise Management) y en el modelo de información común (CIM, Common Information Model) adoptados por el Grupo de trabajo de administración distribuida (DMTF, Distributed Management Task Force).

WMI incluye los objetos administrados definidos por CIM así como las extensiones al modelo CIM para obtener información adicional disponible de la plataforma Windows. Todo esto significa que WMI hace que Windows 2000 sea muy manejable al utilizar una única interfaz lógica, basada en estándares, extensible y orientada a objetos. Asimismo, cualquier aplicación o secuencia de comandos que obtenga acceso a datos de WMI puede hacerlo tanto en el equipo local como de forma remota, sin ningún problema.”

Ahora traduciendo a “castellano” la definición de Microsoft, podemos decir básicamente que WMI es un conjunto de clases (algunas embebidas en el SO) que permite utilizar Métodos, Propiedades, Sucesos y Asociaciones de cada una de esas clases para realizar distintos tipos de tareas. Por ejemplo, si quiero instalar una impresora, primero tengo que instanciar un objeto llamando a la clase Win32_Printer

Ejemplo: Set objPrinter = objWMIService.Get("Win32_Printer") y luego utlizar los métodos de ese objeto para crearla.

Recomiendo la lectura de la siguiente página antes de adentrarnos en temas más complicados.

http://www.microsoft.com/latam/technet/articulos/windows2k/mngwmi/

 

Mi primer script con WMI

 

Para finalizar, vamos a ver un pequeño ejemplo de un VBS utilizando WMI. Básicamente vamos a ver qué usuario está actualmente logueado y lo vamos a mostrar por pantalla

 

Option Explicit

 

Dim strComputer

Dim strUserName

 

strComputer = "."           'Con el punto (.) marco que estamos trabajando sobre el equipo local

 

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") ‘Instancio un objeto para manejar los servicios de WMI en el equipo seleccionado

 

Set colComputer = objWMIService.ExecQuery ("Select * from Win32_ComputerSystem") 'Realizo un query de la clase Win32_ComputerSystem y lo guardo en una colección

 

For Each objComputer in colComputer            'Realizo un bucle de cada objeto en la colección

    strUserName = objComputer.UserName     'Guarda el Nombre de usuario logoneado en una variable

Next

 

Wscript.Echo      “El usuario logueado al equipo es “ & strUserName

 

Comentario final

 

VBS junto a WMI nos permite tener una herramienta de administración muy poderosa y nos abre una puerta al universo de la administración a través de pequeños programas.

Recomiendo a todos los jóvenes administradores que incorporen a su grupo de herramientas de administración el scripting.

 

Bibliografía

Introducción a VBS (Ingles)

http://www.mhuffman.com/notes/language/vbs_intro.htm

 

 

Introducción a WMI

http://www.microsoft.com/latam/technet/articulos/windows2k/mngwmi/

 

Ejemplos de scripting

http://www.microsoft.com/technet/scriptcenter/scripts/default.mspx?mfr=true

 

Published Apr 13 2007, 11:09 AM by Javier
Filed under: ,

Comments

 

lsiliano said:

Muy buena intro al mundo de los Scripts, espero con ansia futuros informes.-

Saludos Luciano.-

April 15, 2007 8:11 AM
El contenido de este sitio no puede ser reproducido de la autorización de sus autores.