Sei sulla pagina 1di 77

Administrador de Redes

Módulo 3. Programación en PowerShell

Julio 2011

Antonio J. Emperador Sau


aemperador@efor.es

1 Administrador de Redes
1. Introducción a la programación

2 Administrador de Redes
1. Introducción a la programación
Fundamentos
• Estructura de un ordenador
• Representación de la información en un ordenador
• Sistema binario y otros sistemas de numeración
• Números con signo, con decimales y con coma flotante
• Representación de caracteres
• Software y lenguajes de programación
• Software
• De sistema
• De aplicación
• Lenguajes
• Máquina
• Ensamblador
• Alto nivel
• Scripting

3 Administrador de Redes
1. Introducción a la programación Fundamentos
• Principios básicos de la programación estructurada
• Dividir en módulos
• Dividir la funcionalidad en funciones para una sola tarea
• Programar funciones en estructura de bloques
• Cada bloque solo puede tener un punto de entrada y de salida
• Al finalizar un bloque debe continuar con otro o finalizar
• Representación = Diagramas de flujo

proceso decisión terminador datos

imprimir entrada datos disco

4 Administrador de Redes
1. Introducción a la programación
Fundamentos
• Bloques:
• Secuencial
• Repetitivo
• De selección o bifurcación
• Pasos para resolver un problema de programación
• Análisis de requisitos
• Diseño del programa
• Codificación
• Prueba del programa
• Validación del programa
• Optimización

5 Administrador de Redes
1. Introducción a la programación
Fundamentos
• Algoritmos
• Programación estructurada vs. Programación orientada a
objetos
• Elementos básicos de un programa
• Los datos
• En variables (definidas por nombre, tipo y valor)
• Las instrucciones
• De asignación (Variable = Expresión o mejor Variable 
Expresión)
• Expresiones numéricas
• suma, resta, multiplicación, división y resto de div. entera
• +, -, *, /, %
• Expresiones condicionales o lógicas
• Operadores de relación: <,>,=,<=,>=,<> (!=)
• Operadores lógicos: AND, OR, NOT (&&, ||, !)

6 Administrador de Redes
1. Introducción a la programación
Fundamentos
• Elementos básicos de un programa
• Estructuras básicas de control
• Instrucciones condicionales (SI)

• Instrucciones repetitivas
• MIENTRAS
• REPETIR MIENTRAS
• Bucle PARA

7 Administrador de Redes
1. Introducción a la programación
• Diseño Metodología
• Descendente (top-down): división en módulos
• Ascendente (bottom-up): reutilización de código
• Codificación
• Editor: creación del código
• Compilador: del fuente al objeto y de él al ejecutable
• Montaje o enlazado: división en ficheros y reensamble
• Ejecutar
• Depurar
• Uso de ayuda y manuales
• Documentación de aplicaciones
• Manuales de desarrollo (requisitos, diseño, código comentado, plan de
pruebas, plan de calidad y control de configuración)
• Manuales para usuarios (manuales de instalación, de usuario y calidad)
• Pruebas de software

8 Administrador de Redes
1. Introducción a la programación
• Manuales de usuario: Metodología
• Descripción general
• Tipo de usuarios a los que va dirigida
• Diferencia con versiones anteriores (csv)
• Métodos de arranque y ejecución
• Restricciones y comportamiento
• Comportamiento por tipología de usuario
• Errores que pueden producirse
• Índice alfabético
• Ejercicios (a realizar en dos grupos)
• Realizar la división en módulos de una aplicación para gestionar un
instituto. Se considerarán los grupos, las aulas y demás recintos, los
profesores, alumnos, asignaturas, calificaciones, etc.
• Realizar el manual de usuario de:
• Grupo 1: aplicación de un cajero automático
• Grupo 2: aplicación que suma valores hasta que se mete 0

9 Administrador de Redes
1. Introducción a la programación
• Clasificaciones: Tipos de datos
• Por tamaño en memoria fija o variable (estáticos y dinámicos)
• Por número de elementos (básicos y complejos)
• Identificadores, variables y constantes
• Tipos de datos elementales:
• Tipos elementales
• Operadores
• Tipos numéricos enteros
• Tipos numéricos reales
• Números complejos
• Tipo carácter (ASCII)
• Tipo lógico
• Tipos avanzados
• Arrays
• Cadena de caracteres
• Estructuras y punteros
• Conversión de tipos

10 Administrador de Redes
1. Introducción a la programación
Tipos de datos

11 Administrador de Redes
1. Introducción a la programación
Estructuras
• Tipos de estructuras:
• De secuencia
• De selección
• De iteración
• Sentencias:
• If
• If-else
• While
• For
• Do-while
• Switch
• Break y continue

12 Administrador de Redes
1. Introducción a la programación
• Motivación: Funciones y subrutinas
• Complejidad: división en módulos más pequeños
• Localización más simple de errores en código
• Permite trabajar a varias personas
• Reutilización de código
• Subrutinas, subprogramas o procedimientos (Sub)
• Llamados por su nombre
• Realizan acciones pero no retornan valores
• Claves en programación estructurada
• Funciones (Function)
• Invocados como asignación a una variable o cálculo
• Realizan acciones aunque lo más importante es que retornan valores (de
diverso tipo, incluso matrices)
• En el código debe encontrarse una asignación de valor al nombre de la
función o, en otros lenguajes, una expresión return
• Argumentos

13 Administrador de Redes
1. Introducción a la programación
• Matrices: Matrices y cadenas
• Motivación:
• Almacenar múltiples valores con un solo nombre
• Series de valores
• Valores interrelacionados
• Utilización
• Declaración
• Definición
• Uso
• Unidimensionales y multidimensionales
• Redimensionamiento
• Cadenas:
• Definición
• Funciones de tratamiento de cadenas de string:
• Len, Right, Left, Instr, …

14 Administrador de Redes
2. Generalidades

15 Administrador de Redes
2. Generalidades de PowerShell
 Microsoft PowerShell:
 ¿Qué es?
 Shell de línea de comandos y lenguaje de script
 Basado en .NET Framework
 Usado para la administración y automatización de tareas en Windows
 ¿Dónde?
 Sitio del producto: http://technet.microsoft.com/es-ES/scriptcenter/dd742419.aspx
 Sitio de descarga ver. 2: http://support.microsoft.com/kb/968929
 Ayudas
 Ayuda de PowerShell:
 En línea: get-help comando
 Desde el archivo de ayuda del ISE
 Manuales, temas de ayuda, comandos, etc. en
http://technet.microsoft.com/es-es/library/bb978525.aspx
 Repositorios de scripts: http://gallery.technet.microsoft.com/scriptcenter/es-es
 Arranque
 Desde Inicio – Programas – Accesorios
 Escribiendo en el interfaz de comandos powershell
 Si hay que ejecutar determinados scripts o preferencias, arrancar en modo administrador
 Si hay problemas, modificar Executionpolicy (con Set-ExecutionPolicy -ExecutionPolicy Unrestricted)

16 Administrador de Redes
2. Generalidades de PowerShell
 Microsoft PowerShell:
 ¿Cómo usarlo?
 Como interfaz de comandos, al igual que cmd
 Incluye muchos comandos cmd conodidos (dir, copy, move, ipconfig…)
 Como interfaz de programación
 Creando scripts (extensión .ps1) con cualquier editor y ejecutándolos
 Mediante el entorno de programación PowerShell ISE
 Manejo del entorno
 Se escriben los comandos, pudiendo usar autocompletion con el [Tab]
 Mantiene un amplio historial de comandos:
 Mediante el uso de flechas de cursor (arriba/abajo)
 Con [F7]
 Comando Get-History
 Cmdlets
 Son los comandos ampliados de PowerShell
 Constan de verbo-nombre parámetros
 Ejemplos: get-help dir, get-process w*
 Canalizaciones
 Muy importantes: redirigen la salida a otro comando
 Ejemplos: get-process |format-list, get-process |Out-GridView

17 Administrador de Redes
2. Generalidades de PowerShell
 Lenguaje:
 Comentarios con #
 Si queremos un mismo comando en dos líneas, acabar la primera con ` (acento grave
francés)
 Varios comandos en una línea separados por ; (punto y coma)
 Para escribir una respuesta, basta con escribir el comando o variable
 Para pedir datos:
 Mediante parámetros del script que hagamos (directiva param)
 Mediante ventana interactiva (cmdlet Read-host)
 Variables:
 Empiezan por el símbolo $ y contienen letras, números o subrayado (_)
 Su declaración y tipo no es necesaria, pero pueden almacenar cualquier tipo de información,
incluidos objetos
 Constantes:
 No hay una expresión fija, debe utilizarse
Set-Variable –name nom_const –option readonly –value valor
 Hay variables predefinidas ($true, $false, $home, $pshome, $host, $error…)
 Ver las variables: Get-Variable
 La última variable utilizada puede invocarse por $_

18 Administrador de Redes
2. Generalidades de PowerShell
 Variables
 Tipos Tipo Descripción
[int] Entero 32 bit con signo
[long] Entero 64 bit con signo
[string] Cadena de tamaño fijo de caracteres Unicode
[char] Un carácter Unicode de 16 bits
[byte] Un carácter de 8 bits sin signo
[bool] Valor lógico (Booleano) True/False
[decimal] Valor decimal de 128 bits
[single] Número de coma flotante de 32 bits (precisión simple)
[double] Número de coma flotante de 64 bits (doble precisión)
[xml] Un objeto XML
[array] Una matriz de valores
[hashtable] Objeto hashtable

19 Administrador de Redes
2. Generalidades de PowerShell
 Instrucciones:
 Operadores:
 Aritméticos: +, -, *, /, %
 De asignación; =, +=, -=, *=, /=, %=
 De comparación: -eq, -ne, -gt, -lt, -le, -ge
 También coincidencia (-match, -nomatch), sustitución (-replace) y de patrones (-like, -nolike)
 Lógicos: -and, -or, -xor, -not, !
 De redirección: >, >>
 De división y combinación: -split, -join
 De tipo: -is, -isnot, -as…
 … -eq
Operador de comparación
Es igual a
Significado Ejemplo (devuelve el valor True)
1 -eq 1
-ne Es distinto de 1 -ne 2
-lt Es menor que 1 -lt 2
-le Es menor o igual que 1 -le 2
-gt Es mayor que 2 -gt 1
-ge Es mayor o igual que 2 -ge 1
-like Es como (comparación de caracteres "file.doc" -like "f*.do?"
comodín para texto)
-notlike No es como (comparación de "file.doc" -notlike "p*.doc"
caracteres comodín para texto)
-contains Contiene 1,2,3 -contains 1
-notcontains No contiene 1,2,3 -notcontains 4

20 Administrador de Redes
2. Generalidades de PowerShell
 Estructuras:
 Condicionales:
 Condicional if: if… then… elseif… else…
 Ejemplo: $a = 1; if ($a –eq 1){“Es 1”}else{“No es 1”}
 Múltiple switch
 Ejemplo: $b="c"; switch($b){"a"{"Es a"} "b"{"Es b"} "c"{"Es c"}}
 Iteración: bucles
 Bucle while: while (<condición>){<lista de instrucciones>}
 Bucle do:
 do {<lista de instrucciones>} while (<condición>)
 do {<lista de instrucciones>} until (<condición>}
 Bucle for: for (<inicial>; <condición>; <repetir>) {<lista de
instrucciones>}
 Ejemplo: for ($i = 1; $i -le 10; $i++) {$i}
 Bucle foreach: foreach ($<elemento> in $<colección>){<lista
de instrucciones>}
 Ejemplo: $letras=“a”,”b”,”c”,”d”; foreach($letra in $letras){$letra}

21 Administrador de Redes
2. Generalidades de PowerShell
 Práctica 1:
 1.1. Calcular la media de 3 números a introducir (como parámetros o por
petición)
 1.2. Intercambiar 2 variables
 1.3. Sumar los 20 primeros números naturales
 1.4. Leer dos números y escribir el mayor
 1.5. Calcular el factorial de un número
 1.6. Escribir la tabla de multiplicar de un número que se pida
 1.7. Calcular los divisores de un número
 Práctica 2:
 2.1. Calcular las raíces de una ecuación de 2º grado
 2.2. Calcular el área de un círculo
 2.3. Indicar el número de horas y responder semanas, días y horas
 2.4. Solicitar una letra e informar si es vocal
 2.5. Decir si un número es o no primo

22 Administrador de Redes
3. Command Lets (cmdlets)

23 Administrador de Redes
3. cmdlets
 Comandos de PowerShell = cmdlets
 Convención de nomenclatura:
verbo-sustantivo param1 arg1 param2 arg2
 Verbo = acción
 Sustantivo = objeto sobre el que recae la acción
 Opcionalmente, se especifican parámetros con argumentos
 Ejemplos:
 Get-Help
 Get-Help –detailed
 Get-Command
 Get-Command –Verb Get
 Get-Command –Noun Service
 Get-Service
 Acciones:
 Get: obtener información o listado
 Set: escribir un valor
 Stop/Start/Suspend/Restart
 New, Resume…

24 Administrador de Redes
3. cmdlets
 Parámetros comunes
 -WhatIf (qué pasaría si…)
 -Confirm (pregunta antes de ejecutar)
 -Detailed (más detalles)
 -Debug (información sobre depuración)
 -ErrorAction (realiza una acción cuando se producen errores)
 -ErrorVariable (usa una variable para mantener información de error = $Error)
 -OutVariable (variable que almacena la información de salida
 -OutBuffer (mantener nº de objetos antes de llamar al cmdlet siguiente)
 Ejemplos:
 Set-ExecutionPolicy Unrestricted –WhatIf
 Set-ExecutionPolicy Unrestricted –Confirm

25 Administrador de Redes
3. cmdlets
 Get-Command
 Da información básica de los cmdlets y otros comandos u objetos
 Sintaxis:
Get-Command –param1 arg1…
 Parámetros:
 -Verb: cmdlets con el verbo indicado
 -Noun: cmdlets con el sustantivo indicado
 Get-ChildItem
 Muestra los elementos (principales y secundarios) de una o varias ubicaciones
 Se utiliza para sistema de archivos (alias dir, registro, certificados, AD…)
 Sintaxis:
Get-ChildItem –param1 arg1…
 Parámetros:
 -Path “string” (con comodines)
 -Include “string” / -Exclude “String”
 -Name (solo el nombre)
 -Recurse (recursivo)
 Alias: gci, ls, dir

26 Administrador de Redes
3. cmdlets
 Get-Member
 Da información acerca de los miembros de objetos
 Por ejemplo métodos y propiedades
 Ejemplo: Get-ChildItem |Get-Member
 Parámetro importante: -MemberType
 Valores posibles: Aliasproperty, Codeproperty, Property, Noteproperty, Scriptproperty, Properties,
PropertySet, Method, Codemethod, Scriptmethod, Methods, Parametrizedproperty, Memberset y All
 Get-Executionpolicy
 Indica la directiva de seguridad de ejecución de PowerShell
 Puede tener los valores:
 Restricted, allsigned, remotesigned o unrestricted
 Set-ExecutionPolicy
 Cambia la directiva de ejecución
 El parámetro –executionpolicy define la directiva con su argumento

27 Administrador de Redes
3. cmdlets
 Práctica 3:
 3.1. Obtener un listado de los comandos cuyo verbo sea new
 3.2. Obtener un listado de comandos de Process
 3.3. Listado de comandos cuyo verbo sea Set y el nombre empiece por L
 3.4. Mostrar los servicios, detener el servicio “Audio de Windows” confirmando la
acción, mostrar los servicios (tanto en PowerShell como en Services de Windows)
y arrancar de nuevo el servicio en modo Debug
 Práctica 4:
 4.1. Listar el directorio c:\windows\system32\drivers\etc
 4.2. Mostrar los archivos de c:\windows que empiecen por a
 4.3. Listar los archivos de texto (.txt) que se encuentren en c:\windows y sus
subdirectorios
 4.4. Crear un fichero “listado.txt” en el que se incluyan todos los ficheros
ejecutables (.exe) que haya en el disco duro y en otra unidad (CD, por ejemplo)
 4.5. Mostrar los objetos del registro
“hkcu:\HKEY_CURRENT_USER\Software\Macromedia"

28 Administrador de Redes
4. Formatear la salida

29 Administrador de Redes
4. Formatear la salida
 Trabajar con tuberías (sin ser fontanero)
 Ejemplo: Get-Command -verb "Set"|Format-List
 Dar formato a la salida:
 Format-Table (ft):
 Presenta la salida en filas y columnas
 Opción por defecto si lo puede presentar
 Ejemplo: Get-ChildItem C:\Windows |Format-Table
 Parámetro –Autosize
 Format-List (fl)
 Presentación en lista con más información y sin contar (si queremos todos agregamos *
 Por defecto los elementos : Name, CreationTime, LastWriteTime y LastAccessTime
 Personalizable mediante el parámetro –property para añadir otra información (por ejemplo,
FullName, CreationTime, LastWriteTime, …)
 Ejemplo: Get-ChildItem C:\Windows -Recurse | Format-List -Property
FullName,CreationTime,LastWriteTime
 Format-Wide (fw)
 Lista comprimida a varias columnas
 Parámetros:
 Autosize, Column, Groupby…
 Format-Custom (personalizada)

30 Administrador de Redes
4. Formatear la salida
 Filtrando y ordenando
 Group-Object
 Permite formatear la salida agrupando por alguna propiedad
 Muestra el nombre, el número y el grupo
 Ejemplos:
 Get-Process |Group-Object Company
 Get-EventLog System |Group-Object EventId
 Sort-Object
 Ordena la salida por la columna o propiedad indicada
 Pueden indicarse varias separadas por comas
 Parámetros:
 -property, -casesensitive, descending…
 Ejemplos
 Get-Command |Sort-Object –descending
 Get-EventLog System | Group-Object eventid | Sort-Object Count –descending
 get-childitem | sort-object -property LastWriteTime > ordenado.txt
 Where-Object
 Filtra la salida con los elementos que cumplen la condición
 Sintaxis: cmd-let | where-objetc {$_.propiedad –comparador “expresión*”}
 Ejemplos
 get-command | where-object {$_.Name -like “get-*”}
 get-childitem | where-object {$_.Length -ge 10000}

31 Administrador de Redes
4. Formatear la salida
 Salida
 ConvertTo-HTML
 La salida se genera en HTML
 Se puede reenviar a un archivo, bien con el redireccionador > o con | out-file “name.html”
 Puedes abrir el archivo con Invoke-Item “name.html”
 Ejemplos:
 Get-Process | ConvertTo-html | out-file “Processes.html”
 Export-CSV
 La salida del comando se exporta a un archivo de texto separado por comas (CSV)
 Ejemplos
 Get-Process | Export-CSV Processes.csv
 Out-GridView
 La salida se obtiene en un objeto gráfico de tipo “rejilla” (gridview)
 Ejemplos
 get-Process | Out-GridView
 Out-Printer
 La salida se envía a una impresora que debe especificarse como argumento
 Ejemplos
 get-Process | Out-Printer “PDFCreator”

32 Administrador de Redes
4. Formatear la salida
 Práctica 5:
 5.1. Obtener un listado de los archivos de c:\archivos de programa que empiecen
por A en todos los subdirectorios y presentarlo en forma de tabla autoajustada
 5.2. Obtener un listado de los archivos *.txt que haya en c:\windows en forma
tabular autoajustada, incluyendo el nombre, tamaño, fecha de creación,
extensión y su nombre completo
 5.3. Presentar en forma de lista los archivos de c:\windows\system32 que sean
ejecutables (exe, com, bat, …) mostrando el nombre, tamaño, extensión y si es
de solo lectura
 5.4. Mostrar en forma de lista los archivos de c:\archivos de programa y todos sus
subdirectorios que tengan extensión .exe, .dll o .ini, agrupándolos por su
extensión
 5.5. Presentar en 4 columnas el nombre de los archivos de c:\Windows que
empiecen por A o por E, incluyendo sus subdirectorios

33 Administrador de Redes
4. Formatear la salida
 Práctica 6:
 6.1. Mostrar el número de eventos de aplicación agrupados por el tipo de entrada
 Pista: Get-EventLog
 6.2. Listar en forma de tabla el número de archivos de cada tipo de extensión
que hay en el directorio c:\windows\system32, ordenados por la extensión
 6.3. Listar los archivos que hay en el directorio c:\windows\log y sus
subdirectorios que tengan un tamaño mayor de 100 kB, en forma de lista con las
propiedades nombre, tamaño, extensión y fecha de creación
 6.4. Obtener un listado a 3 columnas de los archivos de c:\windows y sus
subdirectorios que tengan tamaño mayor de 2 MB y la fecha de último acceso
esté entre los últimos 7 días
 6.5. Mostrar agrupados por la categoría del evento, los eventos de seguridad de
nuestra máquina que han sucedido en los últimos 3 días, ordenados de mayor a
menor por el número que se haya producido (prueba también a agrupar por el
mensaje)

34 Administrador de Redes
4. Formatear la salida
 Práctica 7:
 7.1. Obtener un listado de los archivos de c:\windows\ con extensión .ini o .log y
generarlo en HTML para lanzarlo en un navegador
 7.2. Sacar un listado en formato CSV de los procesos que se están corriendo en la
máquina ordenados de forma descendente por el uso de procesador. Abrirlo en
Excel.
 7.3. Sacar la lista de los servicios que estén detenidos ordenados por el site y
mostrados en un objeto GridView
 7.4. Imprimir en un PDF el listado en forma de tabla de los programas que
aparecen en Agregar/Quitar programas de Windows, quitando las actualizaciones.
 Pistas: esta opción está en la clave de registro
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\
 Las actualizaciones tienen la clave comanzando por {
 7.5. Listar las unidades de disco (reales) que tenga tu equipo y generar con ellas
una página web
 Pista (Get-PSDrive da las unidades)

35 Administrador de Redes
5. Proveedores PowerShell

36 Administrador de Redes
o being able to use the same cmdlets as working with files and folders, which are shown in

5. Proveedores de PowerShell
 ¿Qué es esto?
 Son programas que nos permiten trabajar con almacenes de datos como si fueran
unidades montadas.
 Sistema de archivos, registro, certificados…
 ¿Con qué? Cmdlet Alias Cmd Commands Descritption
Get-Location gl pwd Directorio actual
Set-Location sl cd, chdir Cambiar el directorio actual
Copy-Item cpi copy Copiar archivos
Remove-Item ri del Elimina un archivo o directorio
Move-Item mi move Mueve (o cambia el nombre) de un arch. o dir.
Rename-Item rni rn Cambia el nombre de un archivo
New-Item ni n/a Crea un nuevo archivo o una carpeta vacía
Clear-Item cli n/a Borra el contenido de un archivo
Set-Item si n/a Establece el contenido de un archivo
Mkdir n/a md Crea un nuevo directorio
Get-Content gc type Envía el contenido de un archivo a la salida

Set-Content sc n/a Establece el contenido de un archivo

37 Administrador de Redes
5. Proveedores de PowerShell
 Get-PSProvider
 Obtiene una lista de los proveedores
 Get-PSDrive: Unidades PSDrive
 Para unidades de disco
 Get-PSDrive
 Muestra las unidades disponibles
 Ejemplo: Get-PSDrive –Provider FileSystem
 Alias
 Lo podemos tratar como otro proveedor (ya lo veremos)
 Ejemplos:
 Set-Localtion Alias:
 Get-ChildItem
 Get-ChildItem | Get-Member
 Variables de entorno (Proveedor env)
 Accede a las variables de entorno del sistema (propiedades de Mi PC)
 Ejemplo: Set-Location Env: ; Get-ChildItem
 Obtener una variable: Get-ChildItem OS
 Crear una variable: New-Item -Path . –Name Variable1 – Value “Texto de la variable”

38 Administrador de Redes
5. Proveedores de PowerShell
 Proveedor Sistema de Archivos
 De forma predeterminada
 Permite trabajar con el sistema de archivos (crear, modificar, eliminar archivos y
carpetas)
 Get-ChildItem, 1ª columna:
 d = directorio
 a = archivo
 r = sólo lectura
 h = oculto
 s = de sistema
 Get-ChildItem –force: muestra los ocultos también
 Creando:
 Directorios: New-Item –Path C:\Nuevo – Type Directory
 Archivo: New-Item –Path C:\Nuevo\Archivo.txt –Type File
 Si no indicas el tipo te lo pregunta
 Moviendo:
 Move-Item –Path C:\Nuevo\Archivo.txt C:\
 Move-Item –Path C:\Nuevo C:\NuevoDir

39 Administrador de Redes
5. Proveedores de PowerShell
 Proveedor Sistema de Archivos
 Renombrando (también con Move)
 Rename-Item –Path C:\Archivo.txt C:\NuevoFile.txt
 Rename-Item –Path C:\NuevoDir C:\Direc
 Borrando archivos y directorios
 Remove-Item –Path C:\NuevoFile.txt –Confirm
 Remove-Item –Path C:\Direc
 Contenido de un archivo
 Obtener el contenido: Get-content C:\Windows\System32\drivers\etc\services
 Obtener el contenido línea a línea: Get-content C:\Windows\System32\drivers\etc\services
|ForEach-Object {write-host $i "" $_; $i++}
 Escribir en un archivo: Set-Content –Path C:\Archivo.txt –Value “Hola, caracola”
 Añadir a un archivo: Add-Content –Path C:\Archivo.txt –Value “Adios”

40 Administrador de Redes
5. Proveedores de PowerShell
 Proveedor Funciones
 Accede a las funciones de PowerShell
 Set-Location Function:
 Get-ChildItem
 Viendo el código de una función
 Get-Content Path
 El proveedor de Registro de Windows
 Podemos conectar con dos ramas:
 HKCU: HKEY_CURRENT_USER
 HKLM: HKEY_LOCAL_MACHINE
 Para: navegar, buscar, crear claves, eliminar claves, añadir valores, modificar
valores y administrar ACL (Access Control Lists)
 Navegar
 Set-Location HKLM:
 Get-ChildItem
 Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion
 Obtener entradas
 Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion

41 Administrador de Redes
5. Proveedores de PowerShell
 El proveedor de Registro de Windows
 Podemos conectar con dos ramas:
 HKCU: HKEY_CURRENT_USER
 HKLM: HKEY_LOCAL_MACHINE
 Para: navegar, buscar, crear claves, eliminar claves, añadir valores, modificar
valores y administrar ACL (Access Control Lists)
 Navegar
 Set-Location HKLM:
 Get-ChildItem
 Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion
 Obtener entradas
 Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion
 Crear una entrada:
 New-Item –path HKLM:\SOFTWARE\Test –Value “Hola caracola”
 Verificar su existencia: Get-ChildItem HKLM:\SOFTWARE\T*
 Verla: Get-ItemProperty –Path HKLM:\SOFTWARE\Test
 Borrar una entrada:
 Remove-Item HKLM:\SOFTWARE\Test

42 Administrador de Redes
5. Proveedores de PowerShell
 Proveedor Variables
 Conectar:
 Set-Location Variable:
 Get-ChildItem
 Listar información de una variable:
 Poner su nombre: $PSHome
 Crear una variable definida por el usuario
 New-Item Variable –Value “Valor”
 Equivalente a Set-Variable Variable2 –value “Valor 2”
 O $Variable3 = “Valor 3”
 Borrar variables
 Remove-Item Variable,Variable2,Variable3
 Proveedor Certificados
 Accede al almacén de certificados
 Set-Location Cert:
 Get-ChildItem
 Get-ChildItem –Recurse |Export-CSV “C:\Certificados.csv” ; Invoke-Item
“C:\Certificados.csv”

43 Administrador de Redes
5. Proveedores de PowerShell
 Práctica 8:
 8.1. Mostrar todos los proveedores y todas las unidades accesibles
 8.2. Mostrar todos los alias que trabajen con Object e Item, ordenados por su
nombre
 8.3. Indicar el nombre de la máquina, el sistema operativo, el identificador de
procesador, número de procesadores y nombre de usuario
 8.4. Crear una variable de entorno llamada HoraAct que contenga la hora de ese
momento. Mostrarla, borrarla y volver a mostrar todas las variables de entorno.
 Práctica 9: C:\
 9.1. Bajo C:\ crear la estructura
de directorios siguiente: PRACTICAS

ENERO FEBRERO

SISTEMAS DESARROLLO PROGRAMACION SISTEMAS

TEMA TEMA TEMA TEMA


PRACTICA1 PRACTICA2 TEMA10
1 2 8 9

44 Administrador de Redes
5. Proveedores de PowerShell
 Práctica 10:
 10.1. Crear un archivo de texto llamado Ejemplo1.txt en el directorio PRACTICA1
 10.2. Renombrar el archivo creado a Ej_1_1.txt y moverlo al directorio FEBRERO
 10.3. Crear otro archivo de texto llamado Ej_2_1.txt que tenga el texto “Hola,
caracola” en el directorio TEMA9
 10.4. Mover el directorio PROGRAMACION de FEBRERO a ENERO, incluyendo sus
subdirectorios, claro
 10.5. Copiar el archivo Ej_2_1.txt al directorio SISTEMAS de ENERO, con el
nombre Ej_3.1.txt
 10.6. Añadir el texto “Adios, caraculo” al Ej_3.1.txt
 10.7. Borrar el archivo Ej_2.1.txt confirmando el borrado
 10.8. Renombrar los directorios PRACTICA1 y PRACTICA2 por LABORES1 y
LABORES2
 10.9. Borrar el directorio SISTEMAS con todos los subdirectorios y archivos que
contenga

45 Administrador de Redes
5. Proveedores de PowerShell
 Práctica 11:
 11.1. Indicar cuantos servicios aparecen listados en el fichero
C:\Windows\System32\drivers\etc\services
 11.2. Contar la cantidad de servicios TCP y UDP hay en el fichero indicado
anteriormente
 11.3. Trabajo con un fichero de log:
 11.3.1. Descargar el fichero access_log de http
://cursos.integra-gestion.com/PdeS/access_log.gz
 11.3.2. Indicar los días que comprende el fichero, mostrando el primer y último acceso
 11.3.3. Decir cuántas petición GET hay y cuántas POST
 11.3.4. Indicar cuántas visitas hay por sistema operativo (Windows, Linux u otros)
 11.3.5. Mostrar cuáles son las 10 páginas más visitadas
 11.3.6. Indicar el número de entradas según el código de respuesta del servidor
 11.3.7. Calcular la suma de bytes transferidos por día
 11.3.8. Con todos los puntos anteriores, hacer un informe en HTML que se mostrará en
el navegador.

46 Administrador de Redes
5. Proveedores de PowerShell
 Práctica 12:
 12.1. Indicar las ramas que tiene el registro en
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion
 12.2. Mostrar los programas que se inician cuando arranca tu ordenador (valores
de la rama
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run)
 12.3. Crear una entrada en el registro llamada Clave en la rama
HKLM:\SOFTWARE\Microsoft con el valor “Hola, caracola”
 12.4. Mostrar las variables actualmente en uso, crear una nueva MiVariable con
el valor 4 y después borrarla. Comprobar que ya no aparece.
 12.5. Mostrar un listado en página web de todos los objetos que se encuentren en
el almacén de certificados.

47 Administrador de Redes
6. El objeto WMI

48 Administrador de Redes
6. WMI
 WMI = Windows Management Instrumentation (Instrumental de
administración de Windows
 Tecnología de administración en Windows
 Base de datos de información del sistema
 Espacio de nombres para scripting, por defecto, root/cimv2
 Para ver las clases, propiedades y métodos: WMI Administrative Tool (
http://www.microsoft.com/downloads/details.aspx?FamilyID=6430f853-1120-48d
b-8cc5-f2abdc3ed314&DisplayLang=en
)

49 Administrador de Redes
6. WMI
 Buscar Clases, Propiedades y Métodos
 Get-WmiObject –List –Namespace “root\cimv2”
 También para máquina remota
 Get-WmiObject –List –Namespace “root\cimv2” –ComputerName WIN2008
 Mostrar propiedades y métodos de una clase
 Get-WmiObject -Class “Win32_Processor” -Namespace “root\CIMV2″
| Get-Member
 Ejemplo de uso (Práctica 13)
 Me piden los datos de fabricante, modelo y número de serie de una máquina, la información de la BIOS,
el tipo de Sistema Operativo, la información de la CPU (fabricante, tipo, velocidad,…), cantidad de
memoria, información de disco, red…
 Sintaxis: Get-WmiObject -Class [classname] -NameSpace [namespace] -ComputerName
[ComputerName]
 Clases:
 Win32_ComputerSystem, Win32_BIOS, Win32_OperatingSystem, Win32_Processor, Win32_DiskDrive,
Win32_NetworkAdapterConfiguration
 Ver Ej_13.ps1

50 Administrador de Redes
6. WMI
 Trabajar con métodos
 Realizan acciones
 Práctica 14.1
 Modificar el adaptador de red para que obtenga la dirección IP automáticamente por DHCP
 Métodos de la clase Win32_NetworkAdapterConfiguration:
 DisableIPSec, EnableDHCP, EnableIPSec , EnableStatic, ReleaseDHCPLease, RenewDHCPLease, SetDNSDomain,
SetDNSServerSearchOrder, SetDynamicDNSRegistration, SetGateways, SetIPConnectionMetric,
SetIPXFrameTypeNetworkPairs, SetTcpipNetbios, SetWINSServer, ConvertFromDateTime, ConvertToDateTime, Delete,
GetType, Put
 Ver Ej_14.1.ps1
 Práctica 14.2
 Modificar el adaptador de red para incluirle todos los datos IP (dirección, máscara, gateway, DNS, …)
 Recordar ver métodos y propiedades:
 Get-WmiObject Win32_NetworkAdapterConfiguration|Get-Member

 Realizar informes con los datos


 Recordar el reenvío a archivos (Práctica 15.1)
 Realizar un informe completo de los adaptadores de red y crear con él un fichero de texto
 Informes a Excel (Práctica 15.2)
 Realizar un informe de los discos en celdas de una hoja de cálculo

51 Administrador de Redes
7. Trabajar con Active Directory

52 Administrador de Redes
7. Trabajar con Active Directory
 Objeto Active Directory:
 La forma de acceso más sencilla es con el ADSI (Active Directory Service
Interfaces)
 Conectamos con ADSI a través de proveedores:
 WinNT (locales)
 LDAP (Servidores, Exchange o AD)

53 Administrador de Redes
7. Trabajar con Active Directory
 Cuentas locales:
 Conectaremos con el proveedor WinNT:
 Datos de conexión: $conexion = [ADSI]”WinNT://MAQUINA”
 Trabajo con grupos locales
 Listar los grupos locales
 $conexion = [ADSI]”WinNT://.”
$conexion.PSBase.Children | Where {$_.PSBase.SchemaClassName –eq ‘group’} | foreach{$_.Name}
 Listar miembros de un grupo
 $conexion = [ADSI]”WinNT://./Administradores,group”
$conexion.PSBase.Invoke(‘Members’) | foreach{$_.GetType().InvokeMember(‘Name’,’GetProperty’,
$null,$_,$null)} (o ‘AdsPath’)
 Añadir un miembro a un grupo
 $conexion = [ADSI]”WinNT://./Administradores,group”
$conexion.Add(“WinNT://UsuarioX”)
 Eliminar un miembro de un grupo
 $conexion = [ADSI]”WinNT://./Administradores,group”
$conexion.Remove(“WinNT://UsuarioX”)

54 Administrador de Redes
7. Trabajar con Active Directory
 Trabajo con grupos locales (continuación)
 Crear un grupo local
 $conexion = [ADSI]”WinNT://.”
$objGrupo = $conexion.Create(‘group’, ‘Nombre_Grupo’)
$objGrupo.Put(‘Description’, “Descripción que quieras”)
$objGrupo.SetInfo()
 Eliminar un grupo
 $conexion = [ADSI]”WinNT://.”
$conexion.Delete(‘group’, ‘Nombre_Grupo’)
 Modificar un grupo:
 Renombrar:
 $conexion = [ADSI]”WinNT://./GrupoViejo,group”
$conexion.psbase.Rename(GrupoNuevo)
$conexion.SetInfo()
 Otras propiedades:
 $conexion = [ADSI]”WinNT://./NombreGrupo,group”
$conexion.Put(‘Description’,’Texto de la descripción’)
$conexion.SetInfo()

55 Administrador de Redes
7. Trabajar con Active Directory
 Trabajo con usuarios locales
 Listado de usuarios
 $conexion = [ADSI]”WinNT://.”
$conexion.PSBase.Children | Where ($_.PsBase.SchemaClassName –eq ‘user’} | ForEach{$_.Name}
 Crear un usario local
 $conexion = [ADSI]”WinNT://.”
$objUser = $conexion.Create(‘user’, ‘Nombre_Usuario’)
$objUser.SetPassword(‘contraseña’)
$objUser.PSBase.InvokeSet(‘Description’, ‘Descripción a rellenar’)
$objUser.SetInfo()
 Modificar un usuario local
 Algunas propiedades:
 $conexion = [ADSI]”WinNT://./Usuario,user”
$conexion.PSBase.InvokeSet(‘Propiedad’,’Valor’)
$conexion.SetInfo()
 Propiedades: Description, FullName, UserFlags, HomeDirectory, HomeDirDrive, Profile, LoginScript,
PasswordAge, PasswordExpired, …
 Hay más propiedades, podemos intentar ver sus nombres con:
 $conexion = [ADSI]”WinNT://./Usuario,user”
Sconexion.PSAdapted

56 Administrador de Redes
7. Trabajar con Active Directory
 Trabajo con usuarios locales (continuación)
 Activar/Desactivar una cuenta
 $user = [ADSI]”WinNT://./NombreUsuario,user”
$user.PSBase.InvokeSet(‘AccountDisabled’, $True)
$user.PSBase.CommitChanges()
 Eliminar un usario local
 $conexion = [ADSI]”WinNT://.”
$conexion.Delete(‘user’,‘NombreUsuario’)

57 Administrador de Redes
7. Trabajar con Active Directory
 Práctica 16. Grupos locales
 16.1. Listar todos los grupos locales
 16.2. Mostrar los miembros del grupo “Administradores” local
 16.3. Crear el grupo local “Contabilidad”
 16.4. Modificar la descripción del grupo “Contabilidad” poniendo “Grupo de
usuarios del programa de Contabilidad”
 16.5. Renombrar el grupo “Contabilidad” por “Finanzas”
 Práctica 17. Cuentas locales
 17.1. Mostrar todos los usuarios locales
 17.2. Crear el usuario local “aperez”, con nombre completo “Antonio Pérez” y
contraseña “Pa$$w0rd”
 17.3. Añadir el usuario “aperez” al grupo “Finanzas”
 17.4. Mostrar todas las propiedades del usuario “aperez”
 17.5. Cambiar el directorio de usuario a “C:\Users\aperez” e indicar que su script
de inicio de sesión es “C:\Users\scripts\aperez.cmd”
 17.6. Añadir a “aperez” al grupo “Administradores” y quitarlo de “Finanzas”

58 Administrador de Redes
7. Trabajar con Active Directory
 Práctica 18. Usuarios y grupos locales
 18.1. Crear los grupos, con su descripción, que se presentan en el fichero
http://cursos.integra-gestion.com/AdeR/material/Grupos_KKFU_SA.txt
 18.2. Crear los usuarios locales indicados en el fichero
http://cursos.integra-gestion.com/AdeR/material/Usuarios_KKFU_SA.txt, teniendo
en cuenta que el fichero presenta la separación de campos por el carácter | y que
los campos están delimitados por “
 18.3. Asignar a cada usuario un script de inicio de sesión con el nombre
“usuario.cmd” en el directorio C:\Users\scripts
 18.4. Asignar a cada usuario los grupos a los que pertenece (fichero
http://cursos.integra-gestion.com/AdeR/material/Asig_KKFU_SA.txt, delimitado
por ;)
 18.5. Crear los scripts de inicio de sesión de cada uno, teniendo en cuenta que
tendrán que conectarse a un recurso compartido denominado con el nombre del
grupo al que pertenecen

59 Administrador de Redes
7. Trabajar con Active Directory
 Práctica 18. Usuarios y grupos locales (continuación)
 18.6. Desactivar las cuentas de los usuarios que pertenecen al grupo “Logística”
 18.7. Eliminar las cuentas de los usuarios del grupo “Servicios”
 18.8. Desasignar los usuarios del grupo “Ingeniería” y luego renombrar el grupo por
“Ingeniería e Imasdé”
 18.9. Cambiar el nombre de inicio de sesión de los siguientes usuarios:
 Cristóbal Carbajal (ccarbajal)  cristobal
 Manuel Rodríguez (mrodriguez)  manolo
 Remedios Iglesias (riglesias)  queremedio
 18.10. Realizar los siguientes listados:
 Usuarios de los grupos Administración y Contabilidad
 Grupos a los que pertenece Berta Asensio
 Todos los usuarios en un fichero de texto separado por ;
 Todos los grupos en un fichero de texto separado por tabulador
 Cada usuario con sus grupos en un fichero de texto separado por | y delimitado por “
 18.11. Eliminar a los usuarios cuyo nombre empieza por “M”
 18.12. Eliminar el grupo “Servicios”

60 Administrador de Redes
7. Trabajar con Active Directory
 Cuentas en Active Directory Domain Services (AD DS)
 Acceso al servicio y a sus objetos
 Usaremos LDAP: en vez de WinNT:
 Podemos acceder a UO, grupos y usuarios
 Debemos conocer el DN (Distinguished Name) de los objetos
 Tipos de acceso:
 Local: $conexion = [ADSI]”LDAP://dominio_IP/…”
 Remoto:
$conexion = New-Object
System.DirectoryServices.DirectoryEntry(‘LDAP://dominio_IP/…’,’usuario’,’contraseña’)
 Espacio de nombres de AD
 Nombres en la estructura jerárquica LDAP
 Nombre completo (DN): CN= Pepe Pérez,OU=Dirección,DC:nombredominio,DC=com
 Nombre relativo (RDN): Pepe Pérez
 Nombre común (CN): Pepe Pérez
 Nombre en versión canónica (DC): DC=com/DC=nombredominio/OU=Dirección/CN=Pepe Pérez
 Nombre en versión canónica 2: nombredominio.com/Dirección/Pepe Pérez
 Nombre de usuario principal (UPN): Pepe.Perez@nombredominio.com
 Nombre de bajo nivel (Cuenta SAM): Nombredominio\pperez o pperez

61 Administrador de Redes
7. Trabajar con Active Directory
 Cuentas en Active Directory Domain Services (AD DS)
 Acceso a usuarios:
 $objUser = [ADSI]”LDAP://CN=Usuario,CN=Users,DC=dominio,DC=com”
 $objUser = [ADSI]”LDAP://CN=User,OU=Bilbao,OU=Admon,DC=dominio,DC=com”
 $objUser = New-Object System.DirectoryServices.DirectoryEntry
('LDAP://IP_Dom/CN=Usuario,CN=Users,DC=ps,DC=dom','Administrador','Pa$$w0rd')
 Acceso al raíz del dominio:
 $objDom = [ADSI]”LDAP://DC=dominio,DC=com”
 Si es local: $objDom = [ADSI]””
 $objDom = New-Object System.DirectoryServices.DirectoryEntry
('LDAP://IP_Dom','Administrador','Pa$$w0rd')
 Acceso al catálogo global:
 $objCat = [ADSI]”GC://DC=dominio,DC=com”
 $objCat = New-Object System.DirectoryServices.DirectoryEntry
(GC://IP_Dom','Administrador','Pa$$w0rd')

62 Administrador de Redes
7. Trabajar con Active Directory
 Cuentas en Active Directory Domain Services (AD DS)
 El acceso se efectúa fundamentalmente buscando objetos con la clase .NET
‘DirectorySearcher’
 $objDom = [ADSI]”LDAP://dom_IP”
$objBusqueda = New-Object System.DirectoryServices.DirectorySearcher($objDom)
 DirectorySearcher:
 Propiedades: CacheResults, ServerTimeLimit, Filter, SearchScope, PageSize, PropertiesToLoad
 Métodos: FindOne, FindAll
 Ejemplo: Mostrar todos los objetos del Directorio:
$objDom = [ADSI]”LDAP://dom_IP”
$objBusqueda = New-Object System.DirectoryServices.DirectorySearcher($objDom)
$objBusqueda.FindAll()
 Lista de Unidades Organizativas:
 $objDom = [ADSI]”LDAP://dom_IP”
$objBusqueda = New-Object System.DirectoryServices.DirectorySearcher($objDom)
$objBusqueda.Filter=‘(objectCategory=OrganizationalUnit)’
$objBusqueda.FindAll() |Format-List
 ¿Sintaxis de los filtros?
 http://msdn.microsoft.com/en-us/library/aa746475.aspx

63 Administrador de Redes
7. Trabajar con Active Directory
 Cuentas en Active Directory Domain Services (AD DS)
 Lista de Usuarios:
 $objDom = [ADSI]”LDAP://dom_IP”
$objBusqueda = New-Object System.DirectoryServices.DirectorySearcher($objDom)
$objBusqueda.Filter=‘(&(objectCategory=Person)(objectClass=user))’
$objBusqueda.FindAll() |Format-List
 Lista de Grupos:
 $objDom = [ADSI]”LDAP://dom_IP”
$objBusqueda = New-Object System.DirectoryServices.DirectorySearcher($objDom)
$objBusqueda.Filter=‘(objectCategory=group)’
$objBusqueda.FindAll() |Format-List
 Tipos de grupo:
 2  Grupo Global
 4  Grupo Local
 8  Grupo Universal
 2147483648  Grupo de Seguridad
$objBusqueda.Filter=‘(&(objectCategory=group)(GroupType=2147483650))’

64 Administrador de Redes
7. Trabajar con Active Directory
 Cuentas en Active Directory Domain Services (AD DS)
 Administración de Unidades Organizativas (OU)
 Crear Unidades Organizativas
 $objDom = [ADSI]”LDAP://dom_IP”
$objOU = $objDom.Create(‘organizationalUnit’,’OU=Aragón’)
$objOU.Put(‘description’,’Comunidad Aragonesa’)
$objOU.SetInfo()
 Renombrar Unidades Organizativas:
 $objDom = [ADSI]”LDAP://dom_IP”
$objDom.MoveHere(‘LDAP://OU=Aragón,DC=ps,DC=dom’,’OU=Comunidad Aragón’)
 Mover un grupo a una Unidad Organizativa
 $objOU = [ADSI]”LDAP://dom_IP/OU=Comunidad Aragón,DC=ps,DC=dom”
$objOU.MoveHere('LDAP://CN=Grupo,OU=Zaragoza,DC=ps,DC=dom','CN=Gropusculo')
 Mover un usuario a una Unidad Organizativa
 $objOU = [ADSI]”LDAP://dom_IP/OU=Comunidad Aragón,DC=ps,DC=dom”
$objOU.MoveHere('LDAP://CN=Usuario,OU=Zaragoza,DC=ps,DC=dom','CN=User')
 Mover una Unidad Organizativa a otra
 $objOU = [ADSI]”LDAP://dom_IP/OU=Comunidad Aragón,DC=ps,DC=dom”
$objOU.MoveHere('LDAP://OU=Zaragoza,DC=ps,DC=dom',‘OU=Zaragoza')
 Eliminar una Unidad Organizativa
 $objOU = [ADSI]”LDAP://dom_IP”
 $objOU.Delete('LDAP://OU=Comunidad Aragón,DC=ps,DC=dom')

65 Administrador de Redes
7. Trabajar con Active Directory
 Cuentas en Active Directory Domain Services (AD DS)
 Administración de Grupos
 Sobre grupos:
 Clasificación en cuanto a finalidad:
 Grupos de distribución: sólo para listas de correo
 Grupos de seguridad: además de distribución, permisos de acceso y derechos
 Clasificación en cuanto a ámbito de visibilidad (en W2003 o posterior):
 Grupos locales: se refiere a locales de una máquina y no pueden pasar de ahí
 Grupos locales de dominio: visibles en su propio dominio; pueden tener como miembros a usuarios y equipos, y
grupos globales y universales u otros grupos locales de dominio. No pueden tener de otros dominios. Se ven en todos
los equipos del dominio (no en W2000 o anterior)
 Grupos globales: miembros de su propio dominio (usuarios, equipos y grupos globales); pueden pertenecer a grupos
locales (de equipo y de dominio) y se les puede asignar derechos y permisos en recursos de otros dominios.
 Grupos universales: miembros de cualquier dominio del bosque (usuarios, equipos, grupos universales y globales). Se
puede dar permisos y derechos en recursos de cualquier dominio. Pueden pertenecer a grupos locales o universales de
cualquier dominio del bosque.
 Uso:
 Hacer pertenecer a usuarios y equipos a grupos globales
 Incluir los grupos globales en locales
 Asignar permisos a los grupos locales

66 Administrador de Redes
7. Trabajar con Active Directory
 Cuentas en Active Directory Domain Services (AD DS)
 Administración de Grupos
 Crear un Grupo Global
 $objOU = [ADSI]”LDAP://dom_IP/OU=Comunidad Aragón,DC=ps,DC=dom”
$objGrupo = $objOU.Create(‘group’,’CN=Teruel’)
$objGrupo.Put(‘SAMaccountname’,’Teruel’)
$objGrupo.Put(‘description’,’Provincia de Teruel’)
$objGrupo.SetInfo()
 Crear un Grupo Local de dominio
 $objOU = [ADSI]”LDAP://dom_IP/OU=Comunidad Aragón,DC=ps,DC=dom”
$objGrupo = $objOU.Create(‘group’,’CN=Huesca’)
$objGrupo.Put(‘SAMaccountname’,’Huesca’)
$objGrupo.Put(‘groupType’,’2147483652’)
$objGrupo.Put(‘description’,’Provincia de Huesca’)
$objGrupo.SetInfo()
 Crear un Grupo Universal
 Igual con groupType 2147483656

67 Administrador de Redes
7. Trabajar con Active Directory
 Cuentas en Active Directory Domain Services (AD DS)
 Administración de Grupos
 Añadir un miembro a un grupo
 $objGrupo = [ADSI]”LDAP://CN=Zaragoza,OU=Comunidad Aragón,DC=ps,DC=dom”
$objGrupo.Add(‘LDAP://CN=Manolito,CN=Users,DC=ps,DC=dom’)
$objGrupo.SetInfo()
 Añadir varios miembros a un grupo
 $objGrupo = [ADSI]”LDAP://CN=Zaragoza,OU=Comunidad Aragón,DC=ps,DC=dom”
$objGrupo.Add(‘LDAP://CN=Manolito,CN=Users,DC=ps,DC=dom’)
$objGrupo.Add(‘LDAP://CN=Mafalda,CN=Users,DC=ps,DC=dom’)
$objGrupo.SetInfo()
 Renombrar un grupo
 $objGrupo = [ADSI]”LDAP://OU=Comunidad Aragón,DC=ps,DC=dom”
$objGrupo.MoveHere(‘LDAP://CN=Teruel,OU=Comunidad Aragón,DC=ps,DC=dom’,’CN=Teruel’)
 Eliminar un grupo
 $objGrupo = [ADSI]”LDAP://OU=Comunidad Aragón,DC=ps,DC=dom”
$objGrupo.Delete(‘group’,’CN=Teruel’)

68 Administrador de Redes
7. Trabajar con Active Directory
 Cuentas en Active Directory Domain Services (AD DS)
 Administración de Usuarios
 Algunas propiedades
importantes (General)

69 Administrador de Redes
7. Trabajar con Active Directory
 Cuentas en Active Directory Domain Services (AD DS)
 Administración de Usuarios
 Algunas propiedades
importantes (Cuenta)

70 Administrador de Redes
7. Trabajar con Active Directory
 Cuentas en Active Directory Domain Services (AD DS)
 Administración de Usuarios
 Algunas propiedades
importantes (Perfil)

71 Administrador de Redes
7. Trabajar con Active Directory
 Cuentas en Active Directory Domain Services (AD DS)
 Administración de Usuarios
 Crear un usuario
 $objOU = [ADSI]”LDAP://OU=Comunidad Aragón,DC=ps,DC=dom”
$objUser=$objOU.Create(‘user’,’CN=Pepe Pérez’)
$objUser.Put(‘SAMAccountName’,’Pperez’)
$objUser.Put(‘UserPrincipalName’,’pperez@ps.dom’)
$objUser.SetInfo()
 Asignar una contraseña
 $objUser = [ADSI]”LDAP://CN=Pepe Pérez,OU=Comunidad Aragón,DC=ps,DC=dom”
$objUser.SetPassword(‘Pa$$w0rd’)
$objUser.SetInfo()
 Activación de una cuenta
 $objUser = [ADSI]”LDAP://CN=Pepe Pérez,OU=Comunidad Aragón,DC=ps,DC=dom”
$objUser.PSBase.InvokeSet(‘AccountDisabled’,$False)
$objUser.SetInfo
 Lectura y cambio de atributos de cuenta
 $objUser = [ADSI]”LDAP://CN=Pepe Pérez,OU=Comunidad Aragón,DC=ps,DC=dom”
$objUser.Put(‘Description’,’José María Pérez Pérez’)
$objUser.SetInfo

$objUser.Get(‘Description’)
$objUser.Description

72 Administrador de Redes
7. Trabajar con Active Directory
 Cuentas en Active Directory Domain Services (AD DS)
 Administración de Usuarios
 Eliminar atributos o escribir atributos multivalor
 Se hace con PutEx, con los siguientes argumentos:
 1º) Acción: 1=eliminar, 2=reemplaza el o los valores especificados, 3=añadir, 4=borra el valor especificado
 2º) Nombre del atributo
 3º) Valor o valores a definir
 $objUser = [ADSI]”LDAP://CN=Pepe Pérez,OU=Comunidad Aragón,DC=ps,DC=dom”
$objUser.PutEx(1,’Description’,$null)
$objUser.SetInfo()
 $objUser = [ADSI]”LDAP://CN=Pepe Pérez,OU=Comunidad Aragón,DC=ps,DC=dom”
$objUser.PutEx(2,’otherTelephone’, @(‘976111111’,’976222222’,’666111111’))
$objUser.SetInfo()
 Eliminar un usuario
 $objOU = [ADSI]”LDAP://OU=Comunidad Aragón,DC=ps,DC=dom”
$objOU.Delete(‘user’,’CN=Pepe Pérez’)
 $usuario = “Pepe Pérez”
$objDom = [ADSI]”LDAP://dom_IP”
$objBus = New-Object System.DirectoryServices.DirectorySearcher($objDom)
$objBus.Filter = ”(&(objectCategory=user)(cn=$usuario))”
$resultado = $objBus.FindOne()
$OU = $($($resultado.path) – replace ‘CN=$usuario,’,’’)
$objOU = [ADSI]”LDAP://$OU”
$objOU.Delete(‘user’,’CN=$usuario’)

73 Administrador de Redes
7. Trabajar con Active Directory
 Partimos de trabajar contra un equipo Windows Server 2008 con
Directorio Activo ubicado en determinada dirección IP y la
administración con PS la haremos de forma remota
 Práctica 19. Enumeración
 19.1. Conectar con el AD del servidor
 19.2. Mostrar las distintas Unidades Organizativas
 19.3. Listar los grupos de seguridad existentes
 19.4. Listar los grupos globales existentes
 19.5. Mostrar todos los usuarios
 Práctica 20. Trabajo con Unidades Organizativas
 Crear las Unidades Organizativas incluidas en el fichero Ej_20_OU.txt. Dicho
fichero tiene dos posibles valores por fila, separados por punto y coma (;): el
primero presenta el nombre de la OU a crear y el segundo, si existe, la OU en la
que debe incluirse (si no está es que cuelga del dominio principal raíz)

74 Administrador de Redes
7. Trabajar con Active Directory
 Práctica 21. Trabajo con Grupos
 Crear los Grupos de Seguridad Globales enumerados en el fichero
Ej_21_Grupos.txt, que dispone de tres datos en cada fila: nombre del grupo,
descripción y OU a la que pertenece. Estos datos están separados por pipeline (|)
 Práctica 22. Usuarios de AD
 Crear los Usuarios enumerados en el fichero Ej_22_Usuarios.txt. El fichero contiene
un usuario por fila y en cada una de ellas los siguientes datos separados por
tabulador:
 Nombre completo
 Nombre
 Apellidos
 Nombre de usuario
 Contraseña
 OU a la que pertenece

75 Administrador de Redes
7. Trabajar con Active Directory
 Práctica 23. Asignación de usuarios a grupos
 Asignar los grupos a los usuarios indicados en el fichero Ej_23_Asig.txt. El fichero
está compuesto por filas en las que aparece cada usuario con los grupos a los que
pertenece (separados por * y entrecomillados).
 Práctica 24. Trabajo combinado con OU, usuarios y grupos
 24.1. Renombrar la OU “Alicante” como “Zuera” y moverla a la OU “Zaragoza”
 24.2. Mover el grupo “Ingeniería” del “País Vasco” a “Navarra”
 24.3. Mover los usuarios de la OU “Calanda” a la de “Teruel”
 24.4. Eliminar la OU “Calanda”
 24.5. Renombrar el grupo “Ingeniería” por “Ingeniería e I+D+i” y mover el grupo a
la OU “Huesca”
 Práctica 25. Propiedades de los usuarios
 25.1. Indicar como correo electrónico de cada usuario, su nombre de usuario y la
OU seguidad de kkfu.com (es decir, del tipo mrodriguez@buerba.kkfu.com)
 25.2. Asignar una contraseña aleatoria de 10 caracteres a los de la OU “Navarra”
 25.3. Poner como teléfonos de “Administración”, 976222222, 976333333 y
976444444
76 Administrador de Redes
7. Trabajar con Active Directory
 Práctica 26. Trabajo con usuarios
 26.1. Poner en la descripción de los usuarios del Grupo de Contabilidad una
indicación que señale esa pertenencia y la página web http://conta.kkfu.com
 26.2. Desactivar las cuentas de los usuarios de la OU “Teruel” y las que cuelgan de
ella
 26.3. Indicar como script de inicio de sesión de los usuarios de la OU “Aragón” (y
sus dependientes) un archivo con su nombre de inicio de sesión acabado en .cmd
(del tipo usuario.cmd)
 26.4. Crear un grupo llamado “Comercial” que estará en la OU “Zaragoza” y cuyos
miembros sean los de “Utebo”
 26.5. Eliminar el grupo “Castellón” y los usuarios que pertenzcan

77 Administrador de Redes

Potrebbero piacerti anche