TIC 1130                       Administración de tareas administrativas mediante scripting                           Scrip...
ContenidoAdministración gráfica vs. ScriptingProgramación orientada a objetosWindows Script Host (WSH, COM, WMI)El entorno...
Administración gráfica vs. Scripting
ScriptingLas actividades administrativas en entorno gráfico no son automatizables, en cambioun script se puede programar c...
Administracion Gráfica vs. ScriptingAdministración Gráfica con GUI (graphical User Interface)  GUI es el menú de posibilid...
El mercado: API’sLa misma diferencia que hay entre cocinar un plato o ir a un restaurante a comerlo    Mercado de ingredie...
El cocinero: programadorUna vez adquiridos los ingredientes, el cocinero los mezcla de forma creativa ypersonal.El program...
Resultado a medidaEl resultado de hacer un script a medida es personal, distinto, una solución a medidade nuestras necesid...
Programación orientada a objetos
Objetos: propiedades + métodos. Interfaces.En Windows a los objetos que vamos a usar desde los scripts se les llama"compon...
Los INTERFACESLa puerta de entrada a todo lo que contiene ese objeto es el INTERFACEIseguridad ---> OBJETO-SEGURIDAD      ...
Ejemplo: el servidor COCHECOMImaginemos un servidor COM que contiene objetos, cada uno de los objetosdescribe característi...
Registro de los objetosSi un objeto no está registrado no existe.Los objetos se registran al instalar el paquete software ...
Entremos al objetoPrimero: defino el objeto al que quiero ir  MiCoche = CreateObject("COCHECOM.SEGURIDAD")Segundo: abro la...
Varios interfaces a un objetoUn objeto puede tener varios interfaces, cada uno de ellos nos dirigirá a un diferenteconjunt...
Windows Script Host
¿Qué es Windows Script Host? Windows Script Host http://en.wikipedia.org/wiki/Windows_Script_Host ¿Es un lenguaje? NO, per...
Modelo sencillo de objetos ofrecido por WSHUn único objeto: WScript
Acceso a otros objetos COMEl entorno WSH incluye el objeto WScript (integrado, no es un objeto con el que hayque conectar)...
Referencias en la webhttp://en.wikipedia.org/wiki/Component_object_modelhttp://en.wikipedia.org/wiki/Windows_Management_In...
El Script CenterScript Centerhttp://www.microsoft.com/technet/scriptcenter
El Script Center: Getting Started
Objetos WSHPor tanto, el objeto WScript podemos usarlo directamente, sin necesidad deconectar con él:WScript.Echo "Hola mu...
El objeto WScriptUsing COM objects- CreateObject, GetObjectHandling input and output- Echo, StdOut, StdIn, StdErrWorking w...
El objeto WScript
El Objeto SHELLRunning Programs- Run, ExecWorking with Special Folders- SpecialFoldersWorking with Shortcuts- CreateShortc...
El objeto SHELL
El objeto NETWORKWorking with network drives- MapNetworkDrive- EnumNetworkDrives- RemoveNetworkDriveWorking with network p...
El objeto NETWORK
El objeto CONTROLLERRunning Scripts on Remote Computers- CreateScript- Execute- TerminateMonitoring Status of Remotely Run...
El objeto CONTROLLER
ResumenLas ventajas de hacer scripts WSH  No es necesario interfaz grafico  Se ejecuta en cualquier plataforma Windows  Lo...
El entorno de desarrollo          IDE
IDESe suele llamar IDE (Integrated Development Environment) a una aplicación quehace las funciones de editor, compilador y...
Notepad2Existe un "Notepad" gratuito adaptado a las necesidades de los programadores,que, aparte de numerar las líneas y c...
Windows Script Files      WSF
Windows Script File y las referenciasEn realidad todo el script anterior, programado en VBS (Visual Basic Scripting)tenemo...
Windows Script Filehttp://en.wikipedia.org/wiki/Windows_Script_FileLos ficheros WSF tienen formato de archivos XML:<packag...
Estructura de un fichero WSF<package><job>  <comment>  </comment>  <runtime>     <named>     <unnamed>     <description>  ...
Ejecución de un scriptSi queremos que nuestro script use ventanas de Windows para presentar información, lo ejecutaremos c...
Cambiar opciones por defecto de WScript/CScriptSi queremos ejecutar nuestro script en modo texto y sin que salga ningun ti...
El inevitable script "Hola Mundo"Usemos el método "Echo" del objeto "WScript" para hacer el típico primer programaholamund...
Visual Basic Scripting        VBS
Nombres de Variables: Camel CaseCamel Casehttp://en.wikipedia.org/wiki/CamelCaseSe llama Camel Case a la costumbre de escr...
Sistemas de nombrado de VariablesNotación Húngarahttp://en.wikipedia.org/wiki/Hungarian_notationLa notación húngara se usa...
Estructuras de control: IFIf condition Then statements ...If condition Then   statements ...End IfIf condition Then   stat...
Estructuras de control: CASESelect Case expression Case first case  statements ... Case other cases ...Case Else statement...
Estructuras de control: Bucles de RepeticiónDo-UntilRepite el bloque HASTA QUE se cumpla cierta condiciónDo statements ......
Técnicas de programación
Paso de parámetros a un scriptparte 1/2: Definiendo named variables o unnamed variables<package><job id="ARGUMENTOS"><comm...
Paso de parámetros a un scriptparte 2/2: Accediendo al valor de los parámetros pasados al script<script language="VBScript...
Objeto FileSystemObjectEl Objeto FileSystemObject lo proporciona el motor de scriptingSet fso = CreateObject("Scripting.Fi...
Recorriendo coleccionesAlgunas de las propiedades de los objetos con valores individuales, mientras queotras propiedades s...
PRACTICASHacer scripts en formato WSF para acceder a los objetos integrados dentro deWSH.Mediante parámetros que le pasare...
PRACTICASLeer código es la mejor forma de aprender a programar.Script Center -> Scripting GuideScripting Solutions for Sys...
Upcoming SlideShare
Loading in...5
×

Scripting en entornos Windows - Conceptos básicos

5,291

Published on

Administración gráfica vs. Scripting
Programación orientada a objetos
Windows Script Host
Notepad2
Windows Script Files
Ejecución de scripts
Visual Basic Scripting
Técnicas básicas

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,291
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Scripting en entornos Windows - Conceptos básicos"

  1. 1. TIC 1130 Administración de tareas administrativas mediante scripting Scripting en entornos Windows Conceptos básicos Joaquín HerreroINSTITUTO NACIONAL DE ADMINISTRACION PÚBLICA PintadoPlan interadministrativo de formación contínua en el área de tecnologías jherrero@mma.esde la información y las comunicaciones
  2. 2. ContenidoAdministración gráfica vs. ScriptingProgramación orientada a objetosWindows Script Host (WSH, COM, WMI)El entorno de desarrollo: Notepad2Windows Script Files (WSF)Ejecución de ScriptsVisual Basic ScriptingTécnicas básicas
  3. 3. Administración gráfica vs. Scripting
  4. 4. ScriptingLas actividades administrativas en entorno gráfico no son automatizables, en cambioun script se puede programar como una "tarea programada" del sistemaEjemplos de Scripts Enviar un mensaje a todos los usuarios del sistema o de cierta aplicación Impedir "logon" a todos los servidores de la granja Hacer RESET a todas las sesiones activas Despublicar todas las aplicaciones de cierto servidor Listado personalizado de los clientes conectados con su dirección IPThe Elements Of Style: UNIX As Literaturehttp://www.rap.ucar.edu/staff/tres/elements.html
  5. 5. Administracion Gráfica vs. ScriptingAdministración Gráfica con GUI (graphical User Interface) GUI es el menú de posibilidades que el sistema nos ofrece Es mucho menos de lo que el sistema es capaz de hacer
  6. 6. El mercado: API’sLa misma diferencia que hay entre cocinar un plato o ir a un restaurante a comerlo Mercado de ingredientes API: objetos del sistema
  7. 7. El cocinero: programadorUna vez adquiridos los ingredientes, el cocinero los mezcla de forma creativa ypersonal.El programador crea una solución a medida usando un lenguaje de programaciónpara "cocinar" los objetos del sistema operativo. Cocinero usando ingredientes Programador usando objetos del API
  8. 8. Resultado a medidaEl resultado de hacer un script a medida es personal, distinto, una solución a medidade nuestras necesidades.
  9. 9. Programación orientada a objetos
  10. 10. Objetos: propiedades + métodos. Interfaces.En Windows a los objetos que vamos a usar desde los scripts se les llama"componentes COM" (Component Object Model)Un objeto COM es un CONTENEDOR de propiedades (valores) métodos (funciones)Es decir, un objeto COM contiene cosas que nos puede dar se le puede pedir que haga cosas para nosotrosEl acceso a las funciones de un objeto se hace mediante interfaces
  11. 11. Los INTERFACESLa puerta de entrada a todo lo que contiene ese objeto es el INTERFACEIseguridad ---> OBJETO-SEGURIDAD | | Tipo de Cinturón de seguridad | Tipo de Frenos | Tipo de Faros | Cambiar la orientación de los faros
  12. 12. Ejemplo: el servidor COCHECOMImaginemos un servidor COM que contiene objetos, cada uno de los objetosdescribe características de un coche . Llamamos a dicho conjunto de objetosCOCHECOM.El servidor COCHECOM va a contener los siguientes objetos: Objeto SEGURIDAD Objeto PRESTACIONES Objeto DIMENSIONESObjeto SEGURIDAD Tipo de Cinturon de seguridad Tipo de Frenos Tipo de Faros Cambiar la orientación de los faros¿Cuáles de esos componentes del objeto "SEGURIDAD" son propiedades y cuálesson métodos?
  13. 13. Registro de los objetosSi un objeto no está registrado no existe.Los objetos se registran al instalar el paquete software que los contieneHKEYCLASSES -COCHECOM.SEGURIDAD -COCHECOM.PRESTACIONES -COCHECOM.DIMENSIONES
  14. 14. Entremos al objetoPrimero: defino el objeto al que quiero ir MiCoche = CreateObject("COCHECOM.SEGURIDAD")Segundo: abro la puerta (inicializar el interfaz) MiCoche.Initialize(Iseguridad)Tercero: pido al objeto una de sus propiedades valor = MiCoche.Tipo_de_Faroo le pido que ejecute uno de los métodos que contiene MiCoche.Bajar_los_faros
  15. 15. Varios interfaces a un objetoUn objeto puede tener varios interfaces, cada uno de ellos nos dirigirá a un diferenteconjunto de propiedades y métodos. También puede suceder que la creación delobjeto lo inicialice automáticamente.MiCoche = CreateObject("COCHECOM.SEGURIDAD")MiCoche.Initialize(Iseguridad)valor1 = MiCoche.Tipo_de_FaroMiCoche.Initialize(Iseguridad_2005)valor2 = MiCoche.Tipo_de_Control_de_TraccionSegún vaya adquiriendo nuevas funciones, el objeto COCHECOM.SEGURIDAD nosabrirá nuevos "interfaces" a esas nuevas funciones.
  16. 16. Windows Script Host
  17. 17. ¿Qué es Windows Script Host? Windows Script Host http://en.wikipedia.org/wiki/Windows_Script_Host ¿Es un lenguaje? NO, pero nos permite usar lenguajes de programación, como VBScript o Jscript. ¿Es un modelo de objetos que yo puedo usar? NO, aunque nos proporciona un sencillo modelo de objetosWindows Script Host es un entorno dentro del cual se ejecutanscripts de diferentes lenguajes y proporciona conexión con losrecursos del sistema.Es algo así como "cmd" para los scripts batch.
  18. 18. Modelo sencillo de objetos ofrecido por WSHUn único objeto: WScript
  19. 19. Acceso a otros objetos COMEl entorno WSH incluye el objeto WScript (integrado, no es un objeto con el que hayque conectar), y tres objetos COM: WshShell, WshNetwork y WshController.Además de esto, WSH nos da acceso a cualquier objeto COM, por ejemplo a lacolección de objetos WMI, que nos contiene las funciones más comunes del sistemaoperativo) o a la colección ADSI (Active Directory Service Interface).
  20. 20. Referencias en la webhttp://en.wikipedia.org/wiki/Component_object_modelhttp://en.wikipedia.org/wiki/Windows_Management_Instrumentationhttp://en.wikipedia.org/wiki/Active_Directory_Service_Interfaces
  21. 21. El Script CenterScript Centerhttp://www.microsoft.com/technet/scriptcenter
  22. 22. El Script Center: Getting Started
  23. 23. Objetos WSHPor tanto, el objeto WScript podemos usarlo directamente, sin necesidad deconectar con él:WScript.Echo "Hola mundo"Sin embargo, para usar los tres objetos COM que incluye WSH hay que conectarcon ellos así:Set objShell = WScript.CreateObject("WScript.Shell")Set objNetwork = WScript.CreateObject("WScript.Network")Set objController = WScript.CreateObject("WshController")
  24. 24. El objeto WScriptUsing COM objects- CreateObject, GetObjectHandling input and output- Echo, StdOut, StdIn, StdErrWorking with command-line arguments- ArgumentsControlling script execution- Quit, Sleep, Timeout, InteractiveObtaining WSH environment info- Application, BuildVersion, FullName, Name, Path, ScriptFullName, ScriptName, VersionHandling events- CreateObject, GetObject, ConnectObject, DisconnectObject
  25. 25. El objeto WScript
  26. 26. El Objeto SHELLRunning Programs- Run, ExecWorking with Special Folders- SpecialFoldersWorking with Shortcuts- CreateShortcutWorking with Environment Variables- Environment, ExpandEnvironmentStringsWorking with the Event Log- LogEventWorking with the Registry- RegRead, RegWrite, RegDeleteSending Keystrokes to an Application- AppActivate, SendKeysObtaining a Scripts Current Directory- CurrentDirectoryCreating Timed Dialog Boxes- Popup
  27. 27. El objeto SHELL
  28. 28. El objeto NETWORKWorking with network drives- MapNetworkDrive- EnumNetworkDrives- RemoveNetworkDriveWorking with network printers- AddPrinterConnection- AddWindowsPrinterConnection- EnumPrinterConnections- SetDefaultPrinter- RemovePrinterConnectionObtaining information about the currently logged-on user- ComputerName- UserDomain- UserName
  29. 29. El objeto NETWORK
  30. 30. El objeto CONTROLLERRunning Scripts on Remote Computers- CreateScript- Execute- TerminateMonitoring Status of Remotely Running Scripts- Status, Start, End, Error (event)Examining Errors Produced by Remotely Running Scripts- Error (event), Error (property), Character,- Description, Line, Number, Source, SourceText
  31. 31. El objeto CONTROLLER
  32. 32. ResumenLas ventajas de hacer scripts WSH No es necesario interfaz grafico Se ejecuta en cualquier plataforma Windows Los programas se crean con el "Notepad" Mucha información en InternetSe puede hacer scripting desde varios lenguajes de programación Cualquier lenguaje que pueda manejar objetos COM Visual Basic, JScript, Perl, PHP, ...Se requieren pocos conocimientos de programación para hacer scripts útiles
  33. 33. El entorno de desarrollo IDE
  34. 34. IDESe suele llamar IDE (Integrated Development Environment) a una aplicación quehace las funciones de editor, compilador y montador todo-en-uno.Muy útil para lenguajes compilados.Los lenguajes de Scripting, como el VBS, son INTERPRETADOS, por lo que no hayque compilarlos antes de ejecutarlos: sencillamente se escribe el código encualquier editor y luego se llama al intérprete para que lo ejecute.Como editor nos vale el NOTEPAD clásico de Windows, si bien tiene dos principalesinconvenientes: No se numeran las líneas, lo cual dificulta encontrar las líneas donde se producen los errores El código no se colorea, lo cual a algunas personas les dificulta la escritura
  35. 35. Notepad2Existe un "Notepad" gratuito adaptado a las necesidades de los programadores,que, aparte de numerar las líneas y colorear el código, tiene varias característicasque los programadores siempre desean tener a mano: Notepad2http://es.wikipedia.org/wiki/Notepad2http://www.flos-freeware.ch/notepad2.html
  36. 36. Windows Script Files WSF
  37. 37. Windows Script File y las referenciasEn realidad todo el script anterior, programado en VBS (Visual Basic Scripting)tenemos que meterlo en un "package" para que las referencias externas funcionen.Este "package" irá en un fichero con extensión WSF (Windows Script File).Las "referencias" son valores numéricos que tenemos que usar al tratar con losobjetos y que gracias a las referencias podremos sustituir por nombres nemotécnicos.Por ejemplo, si un método de un objeto nos pide que indiquemos si el fichero quequeremos abrir es para lectura o escritura, puede pedir que se lo indiquemos con "1"para lectura y "2" para escritura. Usando las referencias externas podremos sustituiresos valores numéricos por los nombres "read_only" y "read_write".
  38. 38. Windows Script Filehttp://en.wikipedia.org/wiki/Windows_Script_FileLos ficheros WSF tienen formato de archivos XML:<package><job id="nombre-del-programa"><comment> Este script permite Logon en todos los servidores de la Granja</comment><reference object="MetaFrameCOM.MetaFramefarm"/><script language="VBScript">... aqui va el script ...</script></job></package>
  39. 39. Estructura de un fichero WSF<package><job> <comment> </comment> <runtime> <named> <unnamed> <description> </description> <example> </example> </runtime> <reference> <script> . . </script></job></package>
  40. 40. Ejecución de un scriptSi queremos que nuestro script use ventanas de Windows para presentar información, lo ejecutaremos con la orden WscriptEn cambio si queremos que funcione como una orden de línea de comandos, loejecutaremos con la orden CScriptPor defecto, los scripts WSF están asociados a Wscript y si queremos ejecutarloscomo linea de comando debemos ejecutarlos asi:C:> CScript nombre-de-script.wsf
  41. 41. Cambiar opciones por defecto de WScript/CScriptSi queremos ejecutar nuestro script en modo texto y sin que salga ningun tipo demensaje por parte del sistema, las opciones son:C:> Wscript //NOLOGO //H:Cscript //SLa opcion //NOLOGO hace que no salga esto cada vez que ejecutamos el script: Microsoft (R) Windows Script Host version 5.6 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.La opcion //H:CScript define a "CScript" como el intérprete por defecto de los scriptsWSF.La opción //S salva estos cambios y los hace permanentes.
  42. 42. El inevitable script "Hola Mundo"Usemos el método "Echo" del objeto "WScript" para hacer el típico primer programaholamundo.vbswscript.echo "Hola Mundo"holamundo.wsf<package><job id="hola"><comment> Mi primer y típico script</comment><script language="VBScript"> wscript.echo "Hola Mundo"</script></job></package>Completar el fichero WSF.
  43. 43. Visual Basic Scripting VBS
  44. 44. Nombres de Variables: Camel CaseCamel Casehttp://en.wikipedia.org/wiki/CamelCaseSe llama Camel Case a la costumbre de escribir un nombre que esté compuesto devarias palabras uniéndo las palabras sin espacios y poniendo en mayúsculas laprimera letra de cada una de las palabras que componen el nombre.El nombre se deriva del efecto visual que tiene una palabra con esta notación, queparece que tiene "jorobas" como los camellos.Se suele poner la primera letra en minúsculas, aunque hay quien no lo hace.Ejemplos: nombreDeDominio, porcentajeDeVentas, etc
  45. 45. Sistemas de nombrado de VariablesNotación Húngarahttp://en.wikipedia.org/wiki/Hungarian_notationLa notación húngara se usa mucho en la documentación de Microsoft, de hecho elinventor de dicha notación, Charles Simonyi, era un húngaro que acabó de "ChiefArchitect" de Microsoft.La idea es que el nombre de la variable incluya información "extra" acerca del TIPOde variable. Se suele poner un prefijo de tres letras minúsculas para representardicho tipo: int - tipo Integer (intSueldo, intNumPedido) str - tipo String (strOU, strNombreDominio) obj - tipo Objeto (objUser, objComputer)A veces se usa una notación abreviada, con un prefijo de un solo caracter (oUser,oComputer).
  46. 46. Estructuras de control: IFIf condition Then statements ...If condition Then statements ...End IfIf condition Then statements ...Else statements ...End IfIf condition Then statements ...ElseIf condition Then statements ...Else statements ...End If
  47. 47. Estructuras de control: CASESelect Case expression Case first case statements ... Case other cases ...Case Else statements ...End Select
  48. 48. Estructuras de control: Bucles de RepeticiónDo-UntilRepite el bloque HASTA QUE se cumpla cierta condiciónDo statements ...Until conditionDo-WhileRepite el bloque MIENTRAS se cumple cierta condiciónDo statements ...While conditionFor Each-NextRepite el bloque para todas las ocurrencias de un array o colecciónFor Each array-collection statements ...Next
  49. 49. Técnicas de programación
  50. 50. Paso de parámetros a un scriptparte 1/2: Definiendo named variables o unnamed variables<package><job id="ARGUMENTOS"><comment> Demostracion de como definir argumentos en fichero WSF</comment><runtime><named name="usuario" helpstring="Nombre del Usuario" type="string" required="true"/><example> holamundo /usuario:jherrero</example></runtime><reference object="MetaFrameCOM.MetaFrameFarm"/>
  51. 51. Paso de parámetros a un scriptparte 2/2: Accediendo al valor de los parámetros pasados al script<script language="VBScript"> Set oArgs=Wscript.Arguments if oArgs.Count=0 then WScript.Echo "Hola Mundo" else if oArgs.Named.Exists("usuario") then X = oArgs.Named("usuario") WScript.Echo "Hola " & X else WScript.Echo "No se que parametro has puesto pero te saludo igual" end if end if WScript.Quit</script></job></package>
  52. 52. Objeto FileSystemObjectEl Objeto FileSystemObject lo proporciona el motor de scriptingSet fso = CreateObject("Scripting.FileSystemObject")Este objeto nos sirve para enumerar las unidades de disco que tenemos disponibles,recorrer los ficheros de un directorio (carpeta), o para crear un fichero de texto yescribir en él, algo muy común en un script si hay que dejar registro escrito deltrabajo realizado:Dim fso, MyFileSet fso = CreateObject("Scripting.FileSystemObject")Set MyFile = fso.CreateTextFile("c:testfile.txt", True)MyFile.WriteLine("This is a test.")MyFile.CloseSet fso = NothingScript Center:Scripting Guide -> Getting Started -> Script Runtime Primer -> FileSystemOject
  53. 53. Recorriendo coleccionesAlgunas de las propiedades de los objetos con valores individuales, mientras queotras propiedades son COLECCIONES.La forma de obtener la colección es mediante un bucle For Each - NextSet objFSO = CreateObject("Scripting.FileSystemObject")Set colDrives = objFSO.DrivesFor Each objDrive in colDrivesWscript.Echo "Available space: " & objDrive.AvailableSpaceWscript.Echo "Drive letter: " & objDrive.DriveLetterWscript.Echo "Drive type: " & objDrive.DriveTypeWscript.Echo "File system: " & objDrive.FileSystemWscript.Echo "Is ready: " & objDrive.IsReadyWscript.Echo "Path: " & objDrive.PathWscript.Echo "Root folder: " & objDrive.RootFolderWscript.Echo "Serial number: " & objDrive.SerialNumberWscript.Echo "Share name: " & objDrive.ShareNameWscript.Echo "Total size: " & objDrive.TotalSizeWscript.Echo "Volume name: " & objDrive.VolumeNameNext
  54. 54. PRACTICASHacer scripts en formato WSF para acceder a los objetos integrados dentro deWSH.Mediante parámetros que le pasaremos al script le indicaremos los datos quequeremos que visualice. WScript WshShell WshNetworkGrabar la información recopilada en los scripts anteriores en un fichero de textousando el objeto COM de acceso al sistema de ficheros: FileSystemObject
  55. 55. PRACTICASLeer código es la mejor forma de aprender a programar.Script Center -> Scripting GuideScripting Solutions for System Administration Active Directory Users Computer Assets Computer Roles Disks and File Systems Files and Folders Logs Printing Processes Services Registry

×