Sunteți pe pagina 1din 63

Windows Script

Administracin de Sistemas
Windows 2003 Server

Santiago Gonzlez Tortosa

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
entrada

ALU

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, conduce


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

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

Do Until
do until condicin
sentencias
loop

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

Doloop while/until
Doloop While
do
sentencias
loop while condicin

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

Doloop Until
do
sentencias
loop until condicin

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

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

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

For eachNext
For each variable in seq
sentencias
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)
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)
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,
texto botones,
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]
estilo [, espera]
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],
titulo [defecto],
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)
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))
H then
Wscript.Quit
else
set drive = fs.GetDrive(H)
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)
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)
nombre
fs.CopyFolder path1 path2
fs.MoveFolder path1 path2<
fs.DeleteFolder(path)
path
fs.FolderExists(path)
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)
fichero
Copiar ficheros fs.CopyFile path1 path2
Borrar ficheros fs.DeleteFile(fichero)
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)
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)
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],
[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

Control de Windows y otras


aplicaciones

Dormir proceso
Manejo de aplicaciones con teclas

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

Manejo de aplicaciones con


teclas

Uso de teclas

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

Teclas especiales
Retroceso

{BS}

Num Lock

{NUMLOCK}

Caps Lock

{CAPSLOCK}

F1

{F1}

DELETE

{DEL}

F2

{F2}

{DOWN UP LEFT
RIGHT}

F16

{F16}

Enter

{ENTER}

Shift

ESC

{ESC}

Ctrl

Print

{PRTSC}

Alt

Tab

{TAB}

Manejo de aplicaciones con


teclas

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

Titulo: Titulo actual de la aplicacin


Titulo:
Titulo
Documento - WordPad

Manejo de aplicaciones con


teclas

Ejemplo 17: Crear un Script que ejecute el


notepad y el wordpad, escriba una frase en
notepad, la copie y pegue en wordpad

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: sgonzalez@fi.upm.es
Pginas web:
http://laurel.datsi.fi.upm.es/~sgonzalez/
http://laurel.datsi.fi.upm.es/