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
entrada
ALU
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.)
programa
proceso
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 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
Estructuras de Control
• 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
• 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ó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…loop 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
For (each)…Next
• 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
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 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 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)
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
• Añadir 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
• Añadir 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 selección 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 especiales
Retroceso
{BS}
Num Lock
{NUMLOCK}
Caps Lock
{CAPSLOCK}
F1
{F1}
DELETE
{DEL}
F2
{F2}
↓↑→←
{DOWN UP LEFT
RIGHT}
…
…
F16
{F16}
Shift
+
Ctrl
^
Alt
%
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 otro
sh.AppActivate titulo
– Titulo: Titulo actual de la aplicación
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 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/
Descargar

Windows Script - Laboratorio SS.OO. [Sistemas Operativos]