You are on page 1of 63

Windows Script

Administracin de Sistemas Windows 2003 Server

Alberto Lpez Martnez

Por qu Windows Script?


Automatizar backups o RI del sistema. Apagar o Reiniciar Windows o cualquier tarea con un click de ratn Relacionar documentos, aplicaciones y automatizar operaciones. Controlar y automatizar tareas administrativas Generar conexiones de red de forma automtica

Contenidos
Conceptos Introduccin a VBScript Windows Script Host Conclusiones Ejercicio Prctico comn con Directivas de grupo

Windows Script
Conceptos

Conceptos Bsicos
Computador Von Neuman
Almacenamiento (Mem. Secund)

Memoria Principal

UC

ALU

entrada

Unidad de Control de Procesos (CPU)

salida

Lenguaje de Programacin
Tcnica estndar de comunicacin que permite expresar las instrucciones que han de ser ejecutadas en un computador. Conjunto de reglas sintcticas y semnticas que definen un programa informtico. Permite a un programador especificar:
datos a operar, Almacenamiento y transmisin Acciones a realizar segn circunstancias

Clasificacin de Lenguajes
Lenguajes Compilados
Pascal, Ada, COBOL, Fortran, C/C++, C#,

Lenguajes Interpretados
PHP, ASP, VBScript, Python,

Lenguajes Compilados e Interpretados


Haskell, Prolog,

Compilacin
CPU solo entiende binario, tambin llamado cdigo mquina (110010110) Proceso ejecutndose en binario Programa en binario Se programa en binario? NO
compilador

Programa VS Proceso
Programa
conjunto de instrucciones que llevan a cabo una operacin en un computador Texto en un fichero

Proceso
Programa en ejecucin Se almacena en Memoria (prim. o sec.)
programa proceso

Paradigmas de Programacin
Forma de representar y manipular el conocimiento. Filosofa para la construccin del software. Cada uno tiene ventajas y desventajas. Situaciones donde un paradigma resulta ms apropiado que otro. Tipos:
Imperativo
Sentencias que cambian el estado del programa

Declarativo o Funcional
Uso de funciones matemticas y predicados formales

Esquema de un Programa

ENTRADA

ALGORITMO

SALIDA

ALGORITMO: Conjunto de operaciones que, secuencialmente, conducen a la respuesta de una pregunta, en un numero finito de pasos.

Metodologa de Programacin
Pasos en la resolucin
Anlisis del problema Realizacin de la estrategia ideada para su solucin Verificacin y anlisis del rendimiento del procedimiento.

Anlisis del Problema


Comprensin del problema Especificacin de los datos de entrada Estudio de los resultados que se desean obtener Estudio del tipo de problema

Estrategia ideada
Estudio del algoritmo a utilizar
Casos bsicos Casos generales Casos extremos

Lectura de datos de entrada Uso de estructuras de datos Presentacin de resultados

Verificacin y validacin
Prueba con casos sencillos Prueba con casos complejos Prueba con casos extremos Estudio del rendimiento
Tiempo Uso de memoria

Refinamiento del algoritmo

Posibles ejemplos
Mnimo entre dos nmeros Suma entre dos nmeros Saber si un numero es cuadrado perfecto Calcular soluciones de una ecuacion de 2 orden Calcular si una fecha (N,N,N) es correcta o no Devolver el valor mximo de una secuencia Calcular el numero de cifras de un numero natural Indicar si una secuencia esta ordenada de mayor a menor Devolver el numero de elementos de una secuencia.

Problema de Josefo
Un grupo de personas prefieren el suicidio a la esclavitud y deciden colocarse en crculo eligiendo siempre al siguiente como ejecutor y asesinando al situado despus del ejecutor. As sucesivamente hasta que quede un slo ciudadano que debera suicidarse. El problema de Josefo es conocer en qu lugar ha de colocarse en el corro para quedar el ltimo y reflexionar libremente sobre la decisin colectiva.

Windows Script
Introduccin a VBScript

VBScript
Qu es? Qu formato tiene?
Fichero de texto

Qu extensin tiene?
fichero.vbs

Cmo editarlo?
Con cualquier editor de texto Microsoft Visual Studio

Cmo ejecutarlo?
Con el comando WScript (WScript fichero.vbs) Doble click al fichero

Estructura de VBScript
Estructura general de un programa
Sentencias, lneas continuas, comentarios

Constantes y variables Operadores Estructuras de control Bucles Funciones y Procedimientos Clases

Estructura de un Programa
***************************************** Programa de prueba Creado: 10/01/2006 ***************************************** declaro variable Dim mensaje inicializo la variable mensaje = hola, que tal? Estoy aprendiendo a programar en VBScript imprimo el mensaje Wscript.Echo mensaje **** Fin del programa

Constantes y Variables
Constantes
Const pi = 3.14159, beta = 0.3

Variables
pr = 200 precio = precio + 10 nombre = Santi

Declaracin explicita (con valor)


Dim precio, iva, precio_total

Constantes y Variables
Array
Dim secuencia(10) secuencia(0) = 11 Dim matriz(2, 2)

Objetos
Set obj = Wscript.Arguments

Constantes y Variables
Ejemplo 1: Calcular el precio real de dos ordenadores, que cuestan:
1123 euros 1326 euros

Ambos sin iva. El programa debe devolver un mensaje personalizado.


Santi, el precio total del ordenador 1 es: XXX euros Santi, el precio total del ordenador 2 es: YYY euros

Operadores
Aritmticos
+, -, *, /, \ (entera), Mod, ^

Lgicos
And, Or, Xor, Imp, Not

Comparacin
<, >, =, <=, >=, <>

Precedencia de operador

Estructuras de Control
Condicin IF if condicin then sentencias elseif condicin2 then sentencias2 else sentencias3 end if Condicin Case select case variable case valor sentencias case valor2 sentencias2 case else sentencias3 end select

Estructuras de Control
Ejemplo 2: Ejecutar un programa que escriba una frase distinta cuando se cumpla una determinada condicin, segn el siguiente valor:
Valor 1 Valor 2 Otro valor

Bucles
Do while/until Do...loop while/until ForNext For EachNext While

Exit Do Exit For

Do while/until
Do While
do while condicin sentencias loop

Do Until
do until condicin sentencias loop

Ejemplo
do while a <= 10 a=a+1 loop

Ejemplo
do until a > 10 a=a+1 loop

Doloop while/until
Doloop While
do sentencias loop while condicin

Doloop Until
do sentencias loop until condicin

Ejemplo
do a=a+1 loop while a <= 10

Ejemplo
do a=a+1 loop until a > 10

For (each)Next
ForNext
For variable = inicio to fin sentencias Next

For eachNext
For each variable in seq sentencias Next

Ejemplo
For i = 1 to 10 a=a+1 Next

Ejemplo
For each persona in cola contador = contador + 1 Next

While
For eachNext
While condicin sentencias Wend

Ejemplo
Dim value Value = 1 While value < 10 value = value + 1 Wend

Funciones y Procedimientos
Funcin function nombre (parametros) nombre es variable resultado end function Ejemplo 3a: Realizar la suma de los 100 primeros nmeros (nmero triangular)

Funciones y Procedimientos
Procedimiento sub nombre (parametros) No se retorna valor end sub Ejemplo 3b: Realizar la suma de los 100 primeros nmeros (nmero triangular)

Clases
Formato:
class nombre declaraciones funciones o procedimientos end class

Ejemplo 4: Almacenar los siguientes datos de un comprador:


Nombre Calle Cdigo postal Telfono

Clases
Atributos publicos y privados Propiedad get: el usuario me pide atributo virtual, que le devuelvo? Propiedad let: el usuario da valor a un atributo virtual, que hago con el?
property get var_virtual acciones end property property let var_virtual acciones end property

Ejemplo 5: Se desea tener los siguientes datos de cada unos de los usuarios:
Nombre completo Correo electrnico Login Password

Windows Script
Windows Script Host

Windows Script Host


Mtodo ECHO Cuadros de Mensaje Objeto WScript
Variables de Entorno Ejecucin de programas

Interaccin de entrada con el usuario Creacin de accesos directos Uso de Sistemas de Fichero y Entrada/Salida Control de Red Control de Windows y otras aplicaciones

Mtodo ECHO
Wscript.Echo Hola, Mundo Wscript.Echo Hola, , Mundo Wscript.Echo El precio es , precio, _ pero se puede rebajar a , rebaja

Cuadros de Mensaje
Formato:
MsgBox texto, botones, titulo

Ejemplo:
MsgBox esto es una prueba, 0, prueba

Posibilidades:
Botones
0: Boton OK 1: Ok y Cancel 2: Abort, Retry y Ignore 3: Yes, No y Cancel 4: Yes y No 5: Retry y Cancel

Cuadros de Mensaje
Iconos
0: Sin icono 16: Parada 32: Pregunta 48: Exclamacin 64: Informacin

Foco
0: Primer botn 256: Segundo botn 512: Tercer botn

Cuadros de Mensaje
Resultado del Cuadro (res = funcin MsgBox):
1: OK 2: Cancel 3: Abort 4: Retry 5: Ignore 6: Yes 7: No

Ejemplo 6: Hacer un cuadro de mensaje que pregunte si deseamos un viaje al Caribe. El programa debe contestar a cada posibilidad.

Objeto WScript
Permite acceder a argumentos
For each arg in Wscript.Arguments ,,, Next

Permite control de variables de Entorno


Set sh = CreateObject(Wscript.Shell) Set env = sh.Enviroment(Process) texto = env(PATH) env(PATH) = c:/windows env.remove(PATH)

Objeto WScript
Permite ejecutar otros programas
sh.Run mandato [, estilo] [, espera] Estilo Ventana
0: Oculta 1: Normal 2: Minimizada 3: Maximizada 4: Normal pero sin foco 6: Minimizada pero sin foco

Espera: True o False Ejemplo 7: Ejecutar el programa Notepad maximizado.

Interaccin de entrada
Caja de entrada
res = InputBox (prompt, [titulo], [defecto], [x], [y])

Si resultado es , cancelacin de insercin Ejemplo 8: Ejecutar un acceso a un programa en el que el usuario tenga que indicar su username. Por cada usuario, debe contestar algo distinto. Hay tres usuarios registrados:
Luis, Juan y Maria

Creacin de accesos directos


set sh = WScript.CreateObject("WScript.Shell") set lnk = sh.CreateShortcut(nombre) lnk.save

Path del Escritorio:


path = sh.SpecialFolders("Desktop")

Ejemplo 9: Creacin de un acceso directo del Script en el escritorio.

Uso de Sistemas de Fichero y E/S


set fs = WScript.CreateObject(Scripting.FileSystemObject) Acceso a todas las unidades de discos (Ejemplo 10) set discos = fs.Drives for each d in discos next Propiedades de una unidad if (NOT fs.DriveExists(H)) then Wscript.Quit else set drive = fs.GetDrive(H) if (drive.IsReady) then drive.DriveLetter drive.DriveType (Desconocido, Borrable, Duro, Remoto, CD, RAM) drive.VolumeName (ShareName) drive.TotalSize drive.FreeSpace end if end if

Uso de Sistemas de Fichero y E/S


Acceso a carpetas set carpeta = fs.GetFolder (path) set carpetas = carpeta.SubFolders for each c in carpetas c.Name Next Crear nueva carpeta Set nc = fs.CreateFolder(path) Renombrar Copiar carpeta Mover carpeta Borrar carpeta Existencia Carpeta c.Rename(nombre) fs.CopyFolder path1 path2 fs.MoveFolder path1 path2< fs.DeleteFolder(path) fs.FolderExists(path)

Uso de Sistemas de Fichero y E/S


Acceso a ficheros
set ficheros = carpeta.Files for each f in ficheros f.Name f.Size f.DateCreated f.DateLastModified Next

Ejemplo 11: Mostrar el contenido de la carpeta System Existencia de fichero fs.FileExists(fichero) Copiar ficheros fs.CopyFile path1 path2 Borrar ficheros fs.DeleteFile(fichero) Ejemplo 12: Sistema Backup

Uso de Sistemas de Fichero y E/S


Acceso a un fichero de texto
OpenTextFile(nombre [, modo[, crear[, formato]]] )
Modo: (1) ForReading, (2) ForWriting, (3) ForAppending Crear: True si se va a crear nuevo. False en caso contrario Formato: TristateTrue si es Unicode, TristateFalse si es ASCII

Lectura de fichero de texto


set entrada = fs.OpenTextFile(fichero.txt) Do While Not (entrada.atEndOfStream) Texto = Texto & entrada.ReadLine & vbCrLf Loop

Escritura (con/sin reemplazo) en fichero


set salida = fs.OpenTextFile(fichero.txt, 2, True) Do While Not (entrada.atEndOfStream) texto = entrada.ReadLine salida.WriteLine texto Loop

Ejemplo 13: Copiar el contenido de un fichero en otro

Control de Red
Objeto Wscript.Network Propiedades:
ComputerName: nombre maquina UserName: usuario logeado UserDomain: dominio conectado

Ejercicio 14: Mostrar la informacion del sistema por pantalla.

Control de Red
Aadir Impresora de Red
Nw.AddPrinterConnection [port], LPpath

Eliminar Impresora de Red


Nw.RemovePrinterConnection Name

Listado Impresoras
set impresoras = Nw.EnumPrinterConnections Name for i = 0 to impresoras.Count 1 Step 2 puerto = impresoras(i) nombre = impresoras(i+1) next

Indicar Impresora Predeterminada


Nw.SetDefaultPrinter Name

Control de Red
Aadir unidades de red
Nw.MapNetWorkDrive unidad path

Listado de unidades de red


set unidades = Nw.EnumNetWorkDrives for i = 0 to unidades.Count -1 step 2 unidad = unidades(i) path = unidades(i+1) next

Ejemplo 15: Crear una unidad de red con una carpeta compartida de tu propia maquina

Dormir proceso Manejo de aplicaciones con teclas

Control de Windows y otras aplicaciones

Dormir Proceso
Dormir script
Wscript.Sleep milisegundos

Espera de datos, uso de CPU Para seleccin de procesos


set sh = Wscript.CreateObject(Wscript.Shell) sh.Run Calc.exe, 1 Wscript.Sleep 500 sh.Run NotePad.exe, 1 Wcript.Sleep 500

Uso de teclas

Manejo de aplicaciones con teclas

set sh = Wscript.CreateObject (Wscript.Shell) sh.sendKeys(teclas)

Teclas especiales
Retroceso Caps Lock DELETE {BS} {CAPSLOCK} {DEL} Num Lock F1 F2 F16 Shift Ctrl Alt {NUMLOCK} {F1} {F2} {F16} + ^ %

Enter ESC Print

{DOWN UP LEFT RIGHT}


{ENTER} {ESC} {PRTSC}

Tab

{TAB}

Ejemplo 16: Crear un script que ejecute la calculadora, calcule el producto entre 1564 y 54028 y luego se cierre automaticamente (Alt+F4)

Manejo de aplicaciones con teclas

Paso de un proceso a otro


sh.AppActivate titulo

Manejo de aplicaciones con teclas

Titulo: Titulo actual de la aplicacin


Titulo: Documento - WordPad

Ejemplo 17: Crear un Script que ejecute el notepad y el wordpad, escriba una frase en notepad, la copie y pegue en wordpad

Manejo de aplicaciones con teclas

Windows Script
Conclusiones

Conclusiones
Muy sencillo de programar Muy sencillo de ejecutar Muy til Muy cmodo Puede llegar a ser complejo

Es muy parecido al resto de lenguajes de programacin

Referencias
Microsoft Windows Script Host 2.0 Developerss Guide Gnter Born http://www.microsft.com/

Informacin
Mail: alberto.lpmtz@gmail.com By Alberto Lpez Martnez. Ing. Sistemas Computacionales.