Diapositiva 1 - Grupo Integra
Download
Report
Transcript Diapositiva 1 - Grupo Integra
Programador de Sistemas
Módulo 4. Programación en PowerShell
Noviembre 2011
Antonio J. Emperador Sau
[email protected]
1
1. Generalidades
2
1. Generalidades de PowerShell
Microsoft PowerShell:
¿Qué es?
¿Dónde?
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
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/eses/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)
3
1. Generalidades de PowerShell
Microsoft PowerShell:
¿Cómo usarlo?
Como interfaz de comandos, al igual que cmd
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
Incluye muchos comandos cmd conodidos (dir, copy, move, ipconfig…)
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
4
1. 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 $_
5
1. 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
6
1. 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…
Operador de comparación
Significado
…
-eq
-ne
-lt
-le
-gt
-ge
-like
-notlike
-contains
-notcontains
Es igual a
Es distinto de
Es menor que
Es menor o igual que
Es mayor que
Es mayor o igual que
Es como (comparación de caracteres
comodín para texto)
No es como (comparación de
caracteres comodín para texto)
Contiene
No contiene
7
Ejemplo (devuelve el valor True)
1 -eq 1
1 -ne 2
1 -lt 2
1 -le 2
2 -gt 1
2 -ge 1
"file.doc" -like "f*.do?"
"file.doc" -notlike "p*.doc"
1,2,3 -contains 1
1,2,3 -notcontains 4
1. Generalidades de PowerShell
Estructuras:
Condicionales:
Condicional if: if… then… elseif… else…
Múltiple switch
Ejemplo: $a = 1; if ($a –eq 1){“Es 1”}else{“No es 1”}
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:
Bucle for: for (<inicial>; <condición>; <repetir>) {<lista de
instrucciones>}
do {<lista de instrucciones>} while (<condición>)
do {<lista de instrucciones>} until (<condición>}
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}
8
1. 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.
2.2.
2.3.
2.4.
2.5.
Calcular las raíces de una ecuación de 2º grado
Calcular el área de un círculo
Indicar el número de horas y responder semanas, días y horas
Solicitar una letra e informar si es vocal
Decir si un número es o no primo
9
2. Command Lets (cmdlets)
10
2. 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…
11
2. 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
12
2. 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
13
2. 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
14
2. 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"
15
3. Formatear la salida
16
3. 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):
Format-List (fl)
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
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)
17
3. 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:
Sort-Object
Ordena la salida por la columna o propiedad indicada
Pueden indicarse varias separadas por comas
Parámetros:
Ejemplos
Get-Process |Group-Object Company
Get-EventLog System |Group-Object EventId
-property, -casesensitive, descending…
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}
18
3. 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:
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 | ConvertTo-html | out-file “Processes.html”
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”
19
3. 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
20
3. 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)
21
3. 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)
22
4. Proveedores PowerShell
23
4. Proveedores de PowerShell4
¿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
24
4. 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”
25
4. 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
26
4. Proveedores de PowerShell
Proveedor Sistema de Archivos
Renombrando (también con Move)
Borrando archivos y directorios
Rename-Item –Path C:\Archivo.txt C:\NuevoFile.txt
Rename-Item –Path C:\NuevoDir C:\Direc
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”
27
4. Proveedores de PowerShell
Proveedor Funciones
Accede a las funciones de PowerShell
Viendo el código de una función
Set-Location Function:
Get-ChildItem
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
28
4. 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
Obtener entradas
Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion
Crear una entrada:
Set-Location HKLM:
Get-ChildItem
Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion
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
29
4. Proveedores de PowerShell
Proveedor Variables
Conectar:
Listar información de una variable:
New-Item Variable –Value “Valor”
Equivalente a Set-Variable Variable2 –value “Valor 2”
O $Variable3 = “Valor 3”
Borrar variables
Poner su nombre: $PSHome
Crear una variable definida por el usuario
Set-Location Variable:
Get-ChildItem
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”
30
4. 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
SISTEMAS
FEBRERO
DESARROLLO
TEMA1
31
TEMA2
PROGRAMACION
PRACTICA1
PRACTICA2
SISTEMAS
TEMA8
TEMA9
TEMA10
4. 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
32
4. 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.integragestion.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.
33
4. 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.
34
5. El objeto WMI
35
5. 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-112048db-8cc5-f2abdc3ed314&DisplayLang=en)
36
5. 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
37
5. 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:
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:
DisableIPSec, EnableDHCP, EnableIPSec , EnableStatic, ReleaseDHCPLease, RenewDHCPLease, SetDNSDomain,
SetDNSServerSearchOrder, SetDynamicDNSRegistration, SetGateways, SetIPConnectionMetric,
SetIPXFrameTypeNetworkPairs, SetTcpipNetbios, SetWINSServer, ConvertFromDateTime, ConvertToDateTime, Delete,
GetType, Put
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
38
6. Trabajar con Cuentas Locales
39
6. Trabajar con Cuentas Locales
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)
40
6. Trabajar con Cuentas Locales
Cuentas locales:
Conectaremos con el proveedor WinNT:
Datos de conexión: $conexion = [ADSI]”WinNT://MAQUINA”
Trabajo con grupos locales
Listar los grupos locales
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://.”
$conexion.PSBase.Children | Where {$_.PSBase.SchemaClassName –eq ‘group’} | foreach{$_.Name}
$conexion = [ADSI]”WinNT://./Administradores,group”
$conexion.Add(“WinNT://UsuarioX”)
Eliminar un miembro de un grupo
$conexion = [ADSI]”WinNT://./Administradores,group”
$conexion.Remove(“WinNT://UsuarioX”)
41
6. Trabajar con Cuentas Locales
Trabajo con grupos locales (continuación)
Crear un grupo local
Eliminar un grupo
$conexion = [ADSI]”WinNT://.”
$objGrupo = $conexion.Create(‘group’, ‘Nombre_Grupo’)
$objGrupo.Put(‘Description’, “Descripción que quieras”)
$objGrupo.SetInfo()
$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()
42
6. Trabajar con Cuentas Locales
Trabajo con usuarios locales
Listado de usuarios
Crear un usario local
$conexion = [ADSI]”WinNT://.”
$conexion.PSBase.Children | Where ($_.PsBase.SchemaClassName –eq ‘user’} | ForEach{$_.Name}
$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
43
6. Trabajar con Cuentas Locales
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’)
44
6. Trabajar con Cuentas Locales
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”
45
6. Trabajar con Cuentas Locales
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.integragestion.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
46
6. Trabajar con Cuentas Locales
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”
47
7. Trabajar con Active Directory
48
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): [email protected]
Nombre de bajo nivel (Cuenta SAM): Nombredominio\pperez o pperez
49
7. Trabajar con Active Directory
Cuentas en Active Directory Domain Services (AD DS)
Acceso a usuarios:
Acceso al raíz del dominio:
$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')
$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')
50
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’
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)
$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
51
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))’
52
7. Trabajar con Active Directory
Cuentas en Active Directory Domain Services (AD DS)
Administración de Unidades Organizativas (OU)
Crear Unidades Organizativas
Renombrar Unidades Organizativas:
$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://CN=Grupo,OU=Zaragoza,DC=ps,DC=dom','CN=Gropusculo')
Mover un usuario a una Unidad Organizativa
$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
$objDom = [ADSI]”LDAP://dom_IP”
$objOU = $objDom.Create(‘organizationalUnit’,’OU=Aragón’)
$objOU.Put(‘description’,’Comunidad Aragonesa’)
$objOU.SetInfo()
$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(‘organizationalUnit’,'LDAP://OU=Comunidad Aragón,DC=ps,DC=dom')
53
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:
Clasificación en cuanto a ámbito de visibilidad (en W2003 o posterior):
Grupos de distribución: sólo para listas de correo
Grupos de seguridad: además de distribución, permisos de acceso y derechos
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
54
7. Trabajar con Active Directory
Cuentas en Active Directory Domain Services (AD DS)
Administración de Grupos
Crear un Grupo Global
Crear un Grupo Local de dominio
$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()
$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
55
7. Trabajar con Active Directory
Cuentas en Active Directory Domain Services (AD DS)
Administración de Grupos
Añadir un miembro a un grupo
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://CN=Zaragoza,OU=Comunidad Aragón,DC=ps,DC=dom”
$objGrupo.Add(‘LDAP://CN=Manolito,CN=Users,DC=ps,DC=dom’)
$objGrupo.SetInfo()
$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’)
56
7. Trabajar con Active Directory
Cuentas en Active Directory Domain Services (AD DS)
Administración de Usuarios
Algunas propiedades
importantes (General)
57
7. Trabajar con Active Directory
Cuentas en Active Directory Domain Services (AD DS)
Administración de Usuarios
Algunas propiedades
importantes (Cuenta)
58
7. Trabajar con Active Directory
Cuentas en Active Directory Domain Services (AD DS)
Administración de Usuarios
Algunas propiedades
importantes (Perfil)
59
7. Trabajar con Active Directory
Cuentas en Active Directory Domain Services (AD DS)
Administración de Usuarios
Crear un usuario
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
$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’,’[email protected]’)
$objUser.SetInfo()
$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
60
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’)
61
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.
19.2.
19.3.
19.4.
19.5.
Conectar con el AD del servidor
Mostrar las distintas Unidades Organizativas
Listar los grupos de seguridad existentes
Listar los grupos globales existentes
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)
62
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
63
7. Trabajar con Active Directory
Práctica 23. Asignación de usuarios a grupos
Práctica 24. Trabajo combinado con OU, usuarios y 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).
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 ImasDmasi” 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 seguida de kkfu.com (es decir, del tipo [email protected])
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
64
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 “Huesca” 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 “Producción” y los usuarios que pertenezcan a él
65