windows script
DESCRIPTION
Windows Script. Administración de Sistemas Windows 2003 Server. Santiago González Tortosa. ¿Por qué Windows Script?. Automatizar backups o RI del sistema. Apagar o Reiniciar Windows o cualquier tarea con un click de ratón Relacionar documentos, aplicaciones y automatizar operaciones. - PowerPoint PPT PresentationTRANSCRIPT
Windows ScriptAdministración de Sistemas
Windows 2003 Server
Santiago González Tortosa
¿Por qué Windows Script?• Automatizar backups o RI del sistema.• Apagar o Reiniciar Windows o cualquier tarea con
un click de ratón• Relacionar documentos, aplicaciones y automatizar
operaciones.• Controlar y automatizar tareas administrativas• Generar conexiones de red de forma automática• …
Contenidos• Conceptos
• Introducción a VBScript
• Windows Script Host
• Conclusiones
• Ejercicio Práctico común con Directivas de grupo
Windows ScriptConceptos
Conceptos Básicos• Computador Von Neuman
entrada Unidad de Control de Procesos (CPU) salida
UC ALU
Memoria Principal
Almacenamiento (Mem. Secund)
Lenguaje de Programación• Técnica estándar de comunicación que
permite expresar las instrucciones que han de ser ejecutadas en un computador.
• Conjunto de reglas sintácticas y semánticas que definen un programa informático.
• Permite a un programador especificar: – datos a operar, – Almacenamiento y transmisión – Acciones a realizar según circunstancias
Clasificación de Lenguajes• Lenguajes Compilados
– Pascal, Ada, COBOL, Fortran, C/C++, C#, …
• Lenguajes Interpretados– PHP, ASP, VBScript, Python,…
• Lenguajes Compilados e Interpretados– Haskell, Prolog, …
Compilación• CPU solo entiende binario, también llamado
código máquina (110010110)
• Proceso ejecutándose en binario
• Programa en binario
• ¿Se programa en binario? NO
compilador
Programa VS Proceso• Programa
– “conjunto de instrucciones que llevan a cabo una operación en un computador”
– Texto en un fichero
• Proceso– Programa en ejecución– Se almacena en Memoria (prim. o sec.)
procesoprograma
Paradigmas de Programación• Forma de representar y manipular el conocimiento. • Filosofía para la construcción del software. • Cada uno tiene ventajas y desventajas. • Situaciones donde un paradigma resulta más
apropiado que otro.• Tipos:
– Imperativo• Sentencias que cambian el estado del programa
– Declarativo o Funcional• Uso de funciones matemáticas 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.
Metodología de Programación• Pasos en la resolución
– Análisis del problema– Realización de la estrategia ideada para su
solución– Verificación y análisis del rendimiento del
procedimiento.
Análisis del Problema• Comprensión del problema
• Especificación 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 básicos– Casos generales– Casos extremos
• Lectura de datos de entrada
• Uso de estructuras de datos
• Presentación de resultados
Verificación y validación• Prueba con casos sencillos
• Prueba con casos complejos
• Prueba con casos extremos
• Estudio del rendimiento– Tiempo– Uso de memoria
• Refinamiento del algoritmo
Posibles ejemplos• Mínimo entre dos números• Suma entre dos números• 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 máximo 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 círculo eligiendo siempre al siguiente como ejecutor y asesinando al situado después del ejecutor. Así sucesivamente hasta que quede un sólo ciudadano que debería 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 decisión colectiva.
Windows ScriptIntroducción a VBScript
VBScript• ¿Qué es? ¿Qué formato tiene?
– Fichero de texto
• ¿Qué extensión tiene?– fichero.vbs
• ¿Cómo editarlo?– Con cualquier editor de texto– Microsoft Visual Studio
• ¿Cómo ejecutarlo?– Con el comando WScript (“WScript fichero.vbs”)– Doble click al fichero
Estructura de VBScript• Estructura general de un programa
– Sentencias, líneas continuas, comentarios
• Constantes y variables• Operadores• Estructuras de control• Bucles• Funciones y Procedimientos• Clases
Estructura de un Programa‘ ‘ **********************************************************************************‘ ‘ Programa de pruebaPrograma de prueba‘ ‘ Creado: 10/01/2006Creado: 10/01/2006‘ ‘ **********************************************************************************‘ ‘ declaro variabledeclaro variableDim mensaje
‘ ‘ inicializo la variableinicializo la variablemensaje = “hola, que tal? Estoy aprendiendo a programar en VBScript”
‘ ‘ imprimo el mensajeimprimo el mensajeWscript.Echo mensaje
‘ ‘ **** Fin del programa **** Fin del programa
Constantes y Variables• Constantes
Const pi = 3.14159, beta = 0.3
• Variablespr = 200
precio = precio + 10
nombre = “Santi”
• Declaración explicita (con valor)Dim precio, iva, precio_total
Constantes y Variables• Array
Dim secuencia(10)
secuencia(0) = 11
Dim matriz(2, 2)
• ObjetosSet obj = Wscript.Arguments
Constantes y VariablesEjemplo 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 eurosSanti, el precio total del ordenador 1 es: XXX eurosSanti, el precio total del ordenador 2 es: YYY eurosSanti, el precio total del ordenador 2 es: YYY euros
Operadores• Aritméticos
– +, -, *, /, \ (entera), Mod, ^+, -, *, /, \ (entera), Mod, ^
• Lógicos– And, Or, Xor, Imp, NotAnd, Or, Xor, Imp, Not
• Comparación– <, >, =, <=, >=, <><, >, =, <=, >=, <>
• Precedencia de operador
Estructuras de Control• Condición IFIF
if condición condición thensentenciassentencias
elseif condición2condición2 thensentencias2sentencias2
elsesentencias3sentencias3
end if
• Condición CaseCaseselect case variablevariable
case valorvalorsentenciassentencias
case valor2valor2sentencias2sentencias2
case elsesentencias3sentencias3
end select
Estructuras de Control• Ejemplo 2: Ejecutar un programa que
escriba una frase distinta cuando se cumpla una determinada condición, según el siguiente valor:– Valor 1– Valor 2– Otro valor
Bucles• Do while/until• Do...loop while/until• For…Next• For Each…Next• While
• Exit Do• Exit For
Do while/until• Do While
do while condicióncondición
sentenciassentencias
loop
• Ejemplodo while a <= 10a <= 10
a = a + 1a = a + 1
loop
• Do Untildo until condicióncondición
sentenciassentencias
loop
• Ejemplodo until a > 10a > 10
a = a + 1a = a + 1
loop
Do…loop while/until• Do…loop While
do
sentenciassentencias
loop while condicióncondición
• Ejemplodo
a = a + 1a = a + 1
loop while a <= 10a <= 10
• Do…loop Untildo
sentenciassentencias
loop until condicióncondición
• Ejemplodo
a = a + 1a = a + 1
loop until a > 10a > 10
For (each)…Next• For…Next
For variablevariable = inicioinicio to finfin
sentenciassentencias
Next
• EjemploFor i = 11 to 1010
a = a + 1a = a + 1
Next
• For each…NextFor each variablevariable in seqseq
sentenciassentencias
Next
• EjemploFor each personapersona in colacola
contador = contador + 1contador = contador + 1
Next
While• For each…Next
While condicióncondiciónsentenciassentencias
Wend
• EjemploDim valueValue = 1While value < 10value < 10
value = value + 1value = value + 1Wend
Funciones y Procedimientos• Función
function nombrenombre (parametrosparametros)
…
‘ nombrenombre es variable resultado
end function
• Ejemplo 3a: Realizar la suma de los 100 primeros números (número triangular)
Funciones y Procedimientos• Procedimiento
sub nombrenombre (parametrosparametros)
…
‘ No se retorna valor
end sub
• Ejemplo 3b: Realizar la suma de los 100 primeros números (número triangular)
Clases• Formato:
class nombrenombredeclaracionesdeclaracionesfunciones o procedimientosfunciones o procedimientos
end class
• Ejemplo 4: Almacenar los siguientes datos de un comprador:– Nombre– Calle– Código postal– Teléfono
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_virtualvar_virtual property let var_virtualvar_virtual
accionesacciones acciones accionesend property end property
• Ejemplo 5: Se desea tener los siguientes datos de cada unos de los usuarios:– Nombre completo– Correo electrónico– Login– Password
Windows ScriptWindows Script Host
Windows Script Host• Método ECHO• Cuadros de Mensaje• Objeto WScript
– Variables de Entorno– Ejecución de programas
• Interacción de entrada con el usuario• Creación de accesos directos• Uso de Sistemas de Fichero y Entrada/Salida• Control de Red• Control de Windows y otras aplicaciones
Método 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 textotexto, botonesbotones, titulotitulo• 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: Exclamación• 64: Información
– Foco• 0: Primer botón• 256: Segundo botón• 512: Tercer botón
Cuadros de Mensaje– Resultado del Cuadro (res = función 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 EntornoSet 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 mandatomandato [, estiloestilo] [, esperaespera]– Estilo Ventana
• 0: Oculta• 1: Normal• 2: Minimizada• 3: Maximizada• 4: Normal pero sin foco• 6: Minimizada pero sin foco
– Espera: TrueTrue o FalseFalse– Ejemplo 7: Ejecutar el programa Notepad maximizado.
Interacción de entrada• Caja de entrada
res = InputBox (prompt, [titulotitulo], [defectodefecto], [xx], [yy])
• Si resultado es “”, cancelación de inserción• 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”
Creación de accesos directosset sh = WScript.CreateObject("WScript.Shell")
set lnk = sh.CreateShortcut(nombrenombre)
…
lnk.save
• Path del Escritorio:path = sh.SpecialFolders("Desktop")
• Ejemplo 9: Creación de un acceso directo del Script en el escritorio.
Uso de Sistemas de Fichero y E/Sset fs = WScript.CreateObject(“Scripting.FileSystemObject”)
• Acceso a todas las unidades de discos (Ejemplo 10)
set discos = fs.Drivesfor each d in discos
…next
• Propiedades de una unidadif (NOT fs.DriveExists(“H”“H”)) then
Wscript.Quitelse
set drive = fs.GetDrive(“H”“H”)if (drive.IsReady) then
drive.DriveLetterdrive.DriveType ‘ (Desconocido, Borrable, Duro, Remoto, CD, RAM)‘ (Desconocido, Borrable, Duro, Remoto, CD, RAM)drive.VolumeName (ShareName)drive.TotalSizedrive.FreeSpace
end ifend if
Uso de Sistemas de Fichero y E/S• Acceso a carpetas
set carpeta = fs.GetFolder (pathpath)set carpetas = carpeta.SubFoldersfor each c in carpetas
…c.Name
Next• Crear nueva carpeta Set nc = fs.CreateFolder(path)• Renombrar c.Rename(nombrenombre)• Copiar carpeta fs.CopyFolder path1 path2path1 path2• Mover carpeta fs.MoveFolder path1 path2<path1 path2<• Borrar carpeta fs.DeleteFolder(pathpath)• Existencia Carpeta fs.FolderExists(pathpath)
Uso de Sistemas de Fichero y E/S• Acceso a ficheros
set ficheros = carpeta.Filesfor each f in ficheros
…f.Namef.Sizef.DateCreatedf.DateLastModified
Next
• Ejemplo 11: Mostrar el contenido de la carpeta System• Existencia de fichero fs.FileExists(ficherofichero)• Copiar ficheros fs.CopyFile path1 path2path1 path2• Borrar ficheros fs.DeleteFile(ficherofichero)• Ejemplo 12: Sistema Backup
Uso de Sistemas de Fichero y E/S• Acceso a un fichero de texto
OpenTextFile(nombre [, modo[, crear[, formato]]] )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 textoset entrada = fs.OpenTextFile(“fichero.txt”“fichero.txt”)Do While Not (entrada.atEndOfStream)
Texto = Texto & entrada.ReadLine & vbCrLfLoop
• Escritura (con/sin reemplazo) en ficheroset salida = fs.OpenTextFile(“fichero.txt”, 2, True“fichero.txt”, 2, True)Do While Not (entrada.atEndOfStream)
texto = entrada.ReadLinesalida.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• Añadir Impresora de Red
Nw.AddPrinterConnection [port][port], LPpath LPpath
• Eliminar Impresora de RedNw.RemovePrinterConnection NameName
• Listado Impresorasset impresoras = Nw.EnumPrinterConnections NameName
for i = 0 to impresoras.Count – 1 Step 2
puerto = impresoras(i)nombre = impresoras(i+1)
next
• Indicar Impresora PredeterminadaNw.SetDefaultPrinter Name
Control de Red• Añadir unidades de red
Nw.MapNetWorkDrive unidad pathunidad path
• Listado de unidades de redset unidades = Nw.EnumNetWorkDrivesfor 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 selección de procesosset 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(“teclasteclas”)
• Teclas especialesNum Lock {NUMLOCK}
F1 {F1}
F2 {F2}
… …
F16 {F16}
Shift +
Ctrl ^
Alt %
Retroceso {BS}
Caps Lock {CAPSLOCK}
DELETE {DEL}
↓ ↑ → ← {DOWN UP LEFT RIGHT}
Enter {ENTER}
ESC {ESC}
Print {PRTSC}
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 otrosh.AppActivate titulotitulo
– Titulo: Titulo actual de la aplicación
TituloTitulo: “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 ScriptConclusiones
Conclusiones• Muy sencillo de programar
• Muy sencillo de ejecutar
• Muy útil
• Muy cómodo
• Puede llegar a ser complejo
• Es muy parecido al resto de lenguajes de programación
Referencias• Microsoft Windows Script Host 2.0
Developers’s Guide – Günter Born
• http://www.microsft.com/
Información• Mail: [email protected]
• Páginas web:– http://laurel.datsi.fi.upm.es/~sgonzalez/– http://laurel.datsi.fi.upm.es/