630 likes | 780 Views
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.
E N D
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. • 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 Script Conceptos
Conceptos Básicos • Computador Von Neuman Almacenamiento (Mem. Secund) Memoria Principal UC ALU entrada Unidad de Control de Procesos (CPU) salida
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.) proceso programa
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 ALGORITMO ENTRADA 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 Script Introducció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 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” • Declaración 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 • Aritméticos • +, -, *, /, \ (entera), Mod, ^ • Lógicos • And, Or, Xor, Imp, Not • Comparación • <, >, =, <=, >=, <> • Precedencia de operador
Condición IF if condición then sentencias elseif condición2 then sentencias2 else sentencias3 end if Condición Case select case variable case valor sentencias case valor2 sentencias2 case else sentencias3 end select Estructuras de Control
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 do while condición sentencias loop Ejemplo do while a <= 10 a = a + 1 loop Do Until do until condición sentencias loop Ejemplo do until a > 10 a = a + 1 loop Do while/until
Do…loop While do sentencias loop while condición Ejemplo do a = a + 1 loop while a <= 10 Do…loop Until do sentencias loop until condición Ejemplo do a = a + 1 loop until a > 10 Do…loop while/until
For…Next For variable = inicio to fin sentencias Next Ejemplo For i = 1 to 10 a = a + 1 Next For each…Next For each variable in seq sentencias Next Ejemplo For each persona in cola contador = contador + 1 Next For (each)…Next
While • For each…Next While condición sentencias Wend • Ejemplo Dim value Value = 1 While value < 10 value = value + 1 Wend
Funciones y Procedimientos • Función function nombre (parametros) … ‘ nombre es variable resultado end function • Ejemplo 3a: Realizar la suma de los 100 primeros números (número triangular)
Funciones y Procedimientos • Procedimiento sub nombre (parametros) … ‘ No se retorna valor end sub • Ejemplo 3b: Realizar la suma de los 100 primeros números (número triangular)
Clases • Formato: class nombre declaraciones funciones 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 getvar_virtual property let var_virtual acciones acciones end 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 Script Windows 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 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: 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 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.
Interacción de entrada • Caja de entrada res = InputBox (prompt, [titulo], [defecto], [x], [y]) • 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 directos set sh = WScript.CreateObject("WScript.Shell") set lnk = sh.CreateShortcut(nombre) … 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/S set fs = WScript.CreateObject(“Scripting.FileSystemObject”) • Acceso a todas las unidades de discos (Ejemplo 10) setdiscos = 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) • Renombrarc.Rename(nombre) • Copiar carpeta fs.CopyFolder path1 path2 • Mover carpeta fs.MoveFolder path1 path2< • Borrar carpeta fs.DeleteFolder(path) • Existencia Carpeta 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