You are on page 1of 104

Administracin de Sistemas Operativos (ASO)

Aplicacin de scripting en sistemas operativos libres y propietarios

06 - Aplicacin de scripting en sistemas operativos libres y propietarios

Estructuras del lenguaje. Creacin y depuracin de scripts. Interpretacin de scripts del sistema. Adaptaciones. Utilizacin de extensiones de comandos para tareas de administracin. Scripts para la administracin de cuentas de usuario, procesos y servicios del sistema operativo

06 - Aplicacin de scripting en sistemas operativos propietarios

POWERSHELL

Introduccin a Powershell Creacin y depuracin de scripts. Estructuras del lenguaje. Interpretacin de scripts del sistema. Adaptaciones. Scripts para la administracin de cuentas de usuario, procesos y servicios del sistema operativo Utilizacin de extensiones de comandos para tareas de administracin: POWERCLI

Introduccin a Powershell
- Windows PowerShell es una interfaz de consola (CLI, Command Line Interface) con posibilidad de escritura y conjuncin de comandos por medio de guiones (scripts en ingls). - Est diseada para su uso por parte de administradores de sistemas, con el propsito de automatizar tareas o realizarlas de forma ms controlada. Versiones: 1.0 - 2006 2.0 3.0 Dic 2011

Acceso: Inicio -> Windows Powershell

Introduccin a Powershell (2)

Windows PowerShell se ha creado sobre Common Language Runtime (CLR) de .NET Framework.
Acepta

y devuelve objetos .NET

Powershell se basa en escasos comandos integrados (cmdlets, function y alias), que se integran en distintas utilidades que los combinan: cmdlets (command-let) : comando de una sla funcin que manipula objetos en powershell. Siempre tienen formato: verbo sustantivo (Get-Help,Start-Service) Verbos: Get: obtiene dato Set: establece o modifica dato Format: aplica formato a datos out: dirigen salida a un destino.

Todos los cmdlets disponen de ficheros de ayuda, accesibles mediante:


get-help <cmdlet> -detailed

Powershell puede ejecutar programas de lnea de comandos tradicional (cmd.exe) y/o aplicaciones windows, e interactuar con ellos. Ejemplo:
ipconfig | select-string -pattern puerta

Creacin y depuracin de scripts

Herramientas para manejar powershell: Integrados en Windows: (vista y posteriores)


Windows Powershell Windows Powershell ISE

Software de terceros
Quest PowerGUI: Script Editor Administrative Console

Reglas bsicas de codificacin: - Las lneas se separan por ; (No se distinguen espacios. ) - NO distingue MAYUSCULAS y minsculas. Get-Help GET-HELP; //ok - Comentarios mediante #misma lnea

Windows Powershell: Probar get-command

Windows Powershell ISE

Quest PowerGUI:

Script Editor Administrative Console

Quest PowerGUI:

Script Editor

Quest PowerGUI:

Consola Administrativa

Error comn: ejecucin de scripts deshabilitada:

Para habilitar la ejecucin de scripts: Set-ExecutionPolicy Unrestricted - Scope CurrentUser

Generacin de script bsico (con ISE): holamundo.ps1 $texto=Hola Mundo Powershell! Write-Host $texto

Generacin de script bsico (directo en Shell):

Generacin de script bsico (PoweGUI):

Ventana de depuracin!

Informacin sobre objetos: Get-Member

Muestra informacin sobre el objeto de servicio, incluidos el nombre del tipo del objeto y una lista de sus propiedades y mtodos.

El editor Power-Gui, nos permite ver:


A travs del editor, mediante Intelisense, mtodos y propiedades del objeto. A travs de su depurador: las propiedades de los objetos y sus valores

Estructuras del lenguaje


Variables y tipos de datos. Operadores Algoritmos y programas Controles de flujo Estructura secuencial. Tuberas. Estructura Alternativa Estructura Iterativa Funciones Programacion orientada a objetos (intro)

Estructuras del lenguaje: Variables y tipos de datos

Variable: Posicin de memoria reservada para almacenar un determinado valor durante la ejecucin de un programa. Tipo de Datos: identifica los valores y operaciones permitidas sobre una determinada variable.

Tipos de Datos en VBA (principales tipos)

TIPOS DE DATOS

[bool]: [int]: [long]: [double]: [char] [string] [date]:

( binaria). Valores $true $false Enteros 32 bits entre +/- 32.768 Enteros 64 bits entre +/- 2.147.483.648 Decimal con doble precisin (+/- 1E308) Carcter individual Cadena de caracteres Fecha y hora

Estructuras del lenguaje: Variables y tipos de datos

Para declarar una variable en powershell, slo se tiene que utilizar el identificador $, y colocar un nombre a la variable. Asignando un valor a la variable, automticamente sta toma el tipo de datos correspondiente a se valor $a= 5 # $a se convierte en un [int] $a=texto # ahora es un [string] Se puede asignar especficamente el tipo, de forma que ste nunca cambie. [int] $a=5 $a=cadena #aqu devolver un error!.

Las variables del entorno pueden ser consultadas como si de una unidad se tratara.

Variables de entorno: adems de las variables predefinidas, se puede acceder a parmetros del sistema operativo a travs de env:

Arrays
Permiten almacenar varios datos bajo una misma variable, de forma equivalente a una tabla. Cada elemento del array se identifica por un ndice.
El primer elemento es el elemento 0. (zero-index)

Simplificando, nos podemos encontrar 3 tipos de arrays: Vectores: $vector= C1,C2,C3 $vector=@(C1, C2,C3) Array Multidimensional: $matriz2d= New-Object object[,] 3,3 Arrays Irregular(jagged arrays): $aspero= 1,2, (1,2,3), 3

Arrays(2) Los arrays no slo pueden ser speros en dimensin, sino tambin en el tipo de datos que contienen:

Arrays(3) Los arrays mas habituales son los devueltos por los propios comandos.

Arrays(3)

Un tipo especial de array son las Tablas Hash, que permiten almacenar pares clave-valor:

$hash=@{ clave1=valor1; .; claven=valorn}

Operadores:
Smbolos que indican el tipo de operacin a realizar sobre variables o datos. Aritmticos: + -*/% ++ (aumentar) -- (disminuir) Lgicos: Relacionales: -and(y) -or () -not (distinto)

-eq Igual que -ne Distinto -lt Menor que (-le menor o igual que) -gt Mayor que (-ge mayor o igual que)

Otros:

-match -like (busquedas en texto) .. (rango) # (comentario) -as (convierte tipo) & . (llamadas a operador) -F (Fomatea)

Ejemplo de uso de operadores de llamada:

. Ejecuta en el contexto actual. & No debe confundirse con el operador -and NOTA: Tienen ms sentido en los objetos.

Estructuras del lenguaje: Algoritmos y programas

Algoritmo: Lista finita de instrucciones que especifica la secuencia de operaciones a realizar para resolver un problema, en el cual, los resultados dependern de unas entradas especficas. Programa Conjunto de instrucciones o sentencias que representan a un algoritmo

Estructuras del lenguaje: Controles de flujo Control de Flujo: Los algoritmos se organizan combinando tres estructuras de control distintas :
Secuencial Alternativa Iterativa

Secuencial Se ejecutan una detrs de otra todas las instrucciones.


$cateto1=$cateto1*$cateto1 $cateto2=$cateto2*$cateto2 $Hipotenusa=$cateto1+$cateto2 $Hipotenusa=[Math]::sqrt($Hipotenusa)

Alternativa Dependiendo de una condicin, se realiza una accin de entre dos (o ms) posibles.
if (condicion) { InstruccionesSiCierto } elseif (condicion) { InstruccionesSiCierto } else { InstruccionesSiFalso }

Alternativa Mltiple:

Iterativa Repeticin de una o ms operaciones un nmero de veces, mientras se cumpla una determinada condicin Dos tipos tradicionales: FOR - WHILE
for (<inicial>; <condicin>; <repetir>) {<lista de instrucciones>}
foreach( <elemento en coleccin> ) { <lista de instrucciones>}

while (<condicin>) {<lista de instrucciones>}

BUCLES ANIDADOS Problemilla: generar los numeros de 1 a 9 colocados en una tabla de 3 por 3 (ascendente o descendente).

Solucin con FOR:

Solucin con FOREACH

Solucin con WHILE

Ejercicio: - Creacin de carpetas ASIR1, ASIR2, DAW1, DAW2, DAM1,DAM2, SMR1, SMR2, SMRd1, SMRd2, a partir de un vector de nombres. - Creacin de 20 subcarpetas de usuarios por cada carpeta creada. Solucin con FOR , FOREACH, y WHILE

Canalizaciones (Pipes)
Las canalizaciones actan como una serie de tubos conectados. (Ejecucin secuencial). Los elementos que se desplazan por la canalizacin pasan a travs de cada tubo. Los comandos se conectan entre s con el operador de canalizacin "|". El resultado de cada comando se utiliza como entrada en el siguiente comando. Ej:

dir c:\ -r | Out-Host -Paging

Canalizaciones (Pipes) (2)

Cada paso de la canalizacin puede devolver un array de resultados. Para actuar sobre cada uno de los elementos del array se recurre a $_ Es muy til realizar filtrados mediante where-object ( o sus alias where ? ) Get-Service | where {$_.status -eq "Running" }

Canalizaciones (Pipes) (3)

Podemos almacenar los resultados de una canalizacin en una variable para procesarlos despus con un bucle foreach
$updates=get-service | where {$_.DisplayName -like "*Update*}

foreach($update in $updates) { write-host $update.name }

Canalizaciones (Pipes) (3)

El ejemplo anterior es vlido, pero no muy lgico. Las propias canalizaciones nos permiten simplificar eso.
(Escribir en na sla lnea):

get-service | where {$_.DisplayName -like "*Windows*} | format-table -property name,status

Canalizaciones (Pipes) (4)

El orden de las canalizaciones no es trivial. Si queremos que se ordenen las listas, mediante sortobject, deberemos hacerlo antes de formatear la tabla:
(Escribir en na sla lnea, y CORREGIR el ERROR):

get-service | where {$_.DisplayName -like "*Windows*} | format-table -property name,status | sort-object -property status

Funciones:

function

Conjunto de instrucciones (identificadas por un nombre y agrupadas entre llaves { } ), que pueden reutilizarse a travs de una llamada (su nombre), y alterar su comportamiento mediante parmetros.
Ejemplo de definicin : function Suma ($a, $b) { $res=$a+$b Write-Host La suma es $res } Suma 2 2

Funciones: function

No es necesario el uso explicito de argumentos. Dentro de la funcin, el array $args, contiene todos los parmetros que pasemos. Return (opcional), devuelve el resultado generado (si le hubiera) Ejemplo: function SumaTodo { $res=0 foreach($s in $args) {$res=$res+ $s} return $res } SumaTodo 1 2 3 4 5 6

Funciones: function

Lo que devuelve una function, puede ser utilizado para ms cosas. function suma($a, $b) { $a+$b } #sin return, nos devolver la ltima operacin #los parmetros se separan con espacios. Encerramos todo #entre prntesis, para distinguir parametros de la siguiente #operacin $a= (suma 10 20) *2

Funciones: function

Las Function se pueden guardar en ficheros y ser reutilizados. Desde otro script se incluyen con . [NombreFichero] Fichero: Discos.ps1

Funciones: function

Hecho Discos.ps1, desde un segundo fichero llamo al primero. Fichero Re-Usando.ps1

LINKS tiles Computer Performance Todo tipo de scripts , incluso Powershell http://www.computerperformance.co.uk/powershell/index.htm

Programacin orientada a objetos (intro)


Las tecnologas orientadas a objetos se han convertido en uno de los motores claves de la industria del software. Implican la creacin de modelos del mundo real, y la construccin de programas basados en esos modelos. Un sistema de software se plantea como una secuencia de transformaciones en un conjunto de objetos, donde stos, conocen cosas (atributos) y hacen cosas (mtodos).

Programacin orientada a objetos (intro)

Conceptos principales:

Clase: descripcin abstracta de un grupo de objetos, que contiene datos (atributos) y procedimientos que son capaces de actuar sobre esos datos (mtodos). Todo objeto es instancia directa de una clase. Atributos: describen el estado de un objeto. Son variables de tipo simple (numricos, caracteres) o bien complejos (otros objetos). Mtodos: Representan las acciones que pueden realizarse por el objeto, sobre el objeto, o datos locales del objeto.

Programacin orientada a objetos (intro)

Conceptos principales:

Herencia: propiedad que permite a los objetos ser construidos a partir de otros objetos, utilizando las estructuras de datos y mtodos previstos en antepasados. Las clases se suelen agrupar en jerarquas, con una clase principal [Object] de la que dependen la mayor parte del resto. Por ello, casi todos los objetos suelen tener propiedades comunes (derivadas de la clase origen)

06 - Aplicacin de scripting en sistemas operativos propietarios

POWERSHELL
Introduccin a Powershell Creacin y depuracin de scripts. Estructuras del lenguaje.

Interpretacin de scripts del sistema. Adaptaciones. Scripts para la administracin de cuentas de usuario, procesos y servicios del sistema operativo Utilizacin de extensiones de comandos para tareas de administracin: POWERCLI

Interpretacin de scripts del sistema. Adaptaciones.

WMI Windows Management Instrumentation Conjunto de objetos y procedimientos que permiten tener acceso y compartir la informacin de administracin de los equipos de una red.
Acceso a la totalidad del sistema operativo de cualquier
equipo de la red

La totalidad de objetos WMI accesibles se puede obtener mediante: Get-WmiObject -list (ms de 1000)
Get-WmiObject -list | Where-Object {$_.name -match "Win32"} (ms de 600)

Interpretacin de scripts del sistema. Adaptaciones: WMI

Ejemplo: Discos del sistema: Win32_LogicalDisk

Interpretacin de scripts del sistema. Adaptaciones: WMI

Win32_LogicalDisk Discos del sistema, y tamao.

Interpretacin de scripts del sistema. Adaptaciones: WMI

Parmetros tiles de Get-WMIobject


- class: parmetro por defecto (se puede omitir). Indica el tipo de objeto a escoger. - namespace: espacio de nombres en el que buscar el objeto. Por defecto: root\cimv2 - computername: equipo en el que ejecutar la bsqueda. Por defecto . (equipo local). - filter: permite restringir el nmero de objetos devueltos segn un determinado filtro (por defecto: todos) - query: permite establecer la bsqueda a travs de consultas sql. - list

Interpretacin de scripts del sistema. Adaptaciones: WMI

Parmetros tiles de Wmiobject. Ejemplos: -class

Interpretacin de scripts del sistema. Adaptaciones: WMI

Parmetros tiles de Wmiobject. Ejemplos: namespace, Lista de espacios disponibles: Get-WmiObject Namespace root class __Namespace

Interpretacin de scripts del sistema. Adaptaciones: WMI

Parmetros tiles de Wmiobject. Ejemplos: namespace (2) Lista de elementos en otro namespace Get-WmiObject Namespace root\directory\ldap -list

Interpretacin de scripts del sistema. Adaptaciones: WMI

Parmetros tiles de Wmiobject. Ejemplos: namespace (3) Ejemplo de objetos Office12

Interpretacin de scripts del sistema. Adaptaciones: WMI

Parmetros tiles de Wmiobject. Ejemplos: filter, query

Cmo obtener tamao disponible total de todos los discos no pticos del equipo?

Adaptadores de red en uso: (con filter o con query)

http://technet.microsoft.com/es-es/library/dd315292.aspx

1) Qu hace ste cdigo?

2) Convirtelo en funcin.

3) Crea una funcin que acepte por parmetro una carpeta de red y cree una unidad de red conectada a esa carpeta. Ej: ConectaCarpeta \\192.168.0.10\Musica

Interpretacin de scripts del sistema. Adaptaciones.

COM Component Object Model - Plataforma de Microsoft para componentes de software. - Permite la comunicacin entre procesos y la creacin dinmica de objetos, en cualquier lenguaje de programacin que soporte dicha tecnologa. - Abarca las tecnologas OLE, OLE Automation, ActiveX, COM+ y DCOM

Los objetos COM son otro mtodo de automatizar aplicaciones:

Interpretacin de scripts del sistema. Adaptaciones.

VBA: Visual Basic for Applications: plataforma de desarrollo para automatizacin de aplicaciones office. Ejemplo de solucin idntica en VBA:

Podemos exportar datos a excel va VBA (mtodo 1)

Podemos exportar/importar datos va CSV (mtodo 2) - CSV es un formato donde las columnas se separan por comas

- Al importar en excel, crea una sola columna. Es necesario: Seleccionar la columa Datos -> Texto en Columnas Delimitados-> Tabulacin, Coma Finalizar

Scripts para la administracin de cuentas de usuario (en dominio)


Nota: servicios y procesos se han visto ya en otras diapositivas.

- Mtodo de conexin a un dominio: (con y sin usuario)

Scripts para la administracin de cuentas de usuario (en dominio)

- Para no guardar credenciales, se pueden pedir va dilogo estndar de peticin de credenciales:

- (PtrToStringAuto, y SecureStringToBSTR) convierten el password encriptado en un texto plano, y se lo pasa a la funcin para construir el objeto dominio.
A partir de ahora, haremos ejemplos sencillos, en los que o nos conectamos ya como un usuario del dominio, o se pasa el password como texto plano:

SOLO COMO EJEMPLO, nunca en produccin!.

Scripts para la administracin de cuentas de usuario (en dominio)

- Acceso al contenedor de usuarios, y a una unidad organizativa en concreto (desde el propio dominio)

Scripts para la administracin de cuentas de usuario (en dominio)

- Listado de usuarios de una unidad organizativa

Scripts para la administracin de cuentas de usuario (en dominio)

- Crear unidades organizativas y usuarios

- Variacin de lo anterior (importando de CSV)

Scripts para la administracin de cuentas de usuario (en dominio)

- Bsqueda de usuarios.

Scripts para la administracin de cuentas de usuario (en dominio)

- Librera ActiveDirectory: Para ver la librera, lo mejor es activarla desde del Powergui: File->PowerShell Libraries - Una vez activado, el intelisense tendr incluido todos los cmdlets *-AD*

Librera ActiveDirectory: - Para incluirlo desde el cdigo, directamente escribiremos:


Scripts para la administracin de cuentas de usuario (en dominio)

Scripts para la administracin de cuentas de usuario (en dominio)

Librera ActiveDirectory:

- Unidades organizativas:

Librera ActiveDirectory: - Unidades organizativas (bsqueda y modificacin):


Scripts para la administracin de cuentas de usuario (en dominio)

Scripts para la administracin de cuentas de usuario (en dominio)

Librera ActiveDirectory:

- Usuarios: creacin de usuario.

Scripts para la administracin de cuentas de usuario (en dominio)

Librera ActiveDirectory:

- Usuarios: bsqueda de usuarios.

Scripts para la administracin de cuentas de usuario (en dominio)

Librera ActiveDirectory:

- Usuarios: modificacin de usuario. Ej: Deshabilitar todos los usuarios de una OU

Librera ActiveDirectory: - Grupos: creacin de grupos y membresas.


Scripts para la administracin de cuentas de usuario (en dominio)

Scripts para la administracin de cuentas de usuario (en dominio)

Librera ActiveDirectory:

- Eliminacin de elementos.

Librera ActiveDirectory: - Ejemplo de modularizacin: funcin para crear grupo.


Scripts para la administracin de cuentas de usuario (en dominio)

EJEMPLOS POWERSHELL

You might also like