Windows PowerShell

Anuncio
Windows PowerShell
Los fundamentos del lenguaje
Prólogo
1. Sobre PowerShell
17
2. Sobre este libro
18
3. Sobre los autores
18
Introducción
1. ¿ Para qué utilizar los scripts ?
19
2. Histórico de los lenguajes de script
20
3. Interés de los scripts frente a los lenguajes de programación
23
4. En resumen...
23
Descubrimiento de PowerShell
1. Presentación de PowerShell
25
2. Histórico de versiones
26
3. Plataformas soportadas
28
3.1 Plataformas cliente
3.2 Plataformas servidor
28
28
4. Comenzando con PowerShell
29
4.1 Arranque de la consola PowerShell
www.ediciones-eni.com
© Ediciones ENI
29
1/18
Windows PowerShell
Los fundamentos del lenguaje
4.2 Descubrir la consola clásica
4.3 El entorno integrado de escritura de scripts (ISE)
30
32
5. Una transición suave con el pasado
36
6. Sistema de ayuda integrado
38
6.1 Actualización de los archivos de ayuda
6.2 Configuración del sistema de ayuda en empresa
6.2.1 Copiar la ayuda en una carpeta compartida en red
6.2.2 Actualización de la ayuda desde una carpeta de red compartida
6.2.3 Forzar Update-Help para que utilice la ubicación de red
7. Comandos básicos
42
7.1 Estructura de los comandos
7.2 Get-Command
7.3 Get-Help
7.3.1 Ayuda sobre los comandos
7.3.2 Ayuda conceptual
7.4 Get-Member
8. Gestión de carpetas y archivos
43
43
47
47
49
50
53
8.1 Get-ChildItem (alias: gci, ls, dir)
8.2 Set-Location (alias: sl, cd, chdir)
8.3 Get-Location (alias: gl, pwd)
8.4 New-Item (alias: ni, md)
8.4.1 Crear una carpeta
8.4.2 Crear un archivo
8.5 Remove-Item (alias: ri, rm, rmdir, rd, erase, del)
8.6 Move-Item (alias: mi, move, mv)
8.6.1 Mover archivos
8.6.2 Mover carpetas
8.7 Rename-Item (alias: ren, rni)
8.7.1 Renombrar un archivo
8.7.2 Renombrar una carpeta
8.8 Copy-Item (alias: cpi, cp, copy)
www.ediciones-eni.com
39
40
41
42
42
© Ediciones ENI
53
57
57
57
58
58
59
59
59
60
60
61
61
61
2/18
Windows PowerShell
Los fundamentos del lenguaje
9. Proveedores PowerShell
62
Manipulación de objetos
1. ¿ Qué es la noción de objeto ?
67
2. Manipulación de objetos
69
2.1 Las colecciones
2.2 Diferencias de comportamiento entre versiones de PowerShell
2.3 Selección/recuperación de resultados
2.3.1 Recuperación de los n primeros objetos
2.3.2 Recuperación de los n últimos objetos
2.3.3 Recuperación de objetos únicos
2.3.4 Recuperación de una propiedad determinada
2.3.5 Selección de objetos de un array basado en el valor del índice
2.3.6 Examen de todos los objetos de una colección
2.3.7 Agrupación de objetos
2.3.8 Ordenación de objetos
2.3.9 Enumeración/cantidad de objetos
2.3.10 Comparación de objetos
2.4 Filtrar los objetos
3. Formateo de objetos para la visualización
3.1 Format-List
3.1.1 Visualización selectiva de las propiedades de un objeto
3.1.2 Visualización de todas las propiedades disponibles de un objeto
3.2 Format-Table
3.2.1 Tamaño automático de una tabla
3.2.2 Agrupación sobre una propiedad
4. Creación de objetos personalizados
88
89
90
91
92
94
95
96
4.1 Transformación de un objeto existente
www.ediciones-eni.com
69
72
74
74
75
75
76
78
78
79
81
82
84
86
© Ediciones ENI
96
3/18
Windows PowerShell
Los fundamentos del lenguaje
4.2 Creación de un objeto desde la nada
4.3 Añadir miembros
4.3.1 Añadir una propiedad
4.3.2 Añadir un método
4.4 Creación de una colección de objetos personalizados
99
100
100
102
102
Variables, constantes y tipos
1. Las variables
105
1.1 Creación y asignación
1.2 Determinar el tipo de una variable
1.3 Acceder al contenido de una variable
105
106
106
2. Las constantes
106
3. Tipos de datos
107
4. Asignación manual de tipos y tipado
108
4.1 Conversión de un número decimal en hexadecimal
4.2 Conversión de un número decimal en octal (base 8)
4.3 Conversión de un número decimal en binario (base 2)
110
110
111
5. Hacer obligatoria la declaración e inicialización de variables
111
6. Variables predefinidas
112
6.1 Variables automáticas
6.2 Variables de configuración
112
116
7. Ámbito de las variables
119
7.1 Ámbito global (global:)
7.2 Ámbito local (local:)
7.3 Ámbito script (script:)
7.4 Ámbito privado (private:)
www.ediciones-eni.com
121
122
122
123
© Ediciones ENI
4/18
Windows PowerShell
Los fundamentos del lenguaje
7.5 Ámbito using (using:)
7.6 Ámbito workflow (workflow:)
123
124
8. Cuantificadores de bytes
124
Operadores
1. Introducción
127
1.1 Operadores aritméticos
127
2. Operadores de comparación
129
2.1 Comparación sobre escalares
2.2 Comparación sobre arrays
129
130
3. Operadores de comparación genéricos
131
4. Operador de comparación de expresiones regulares
133
4.1 Operaciones sobre escalares
4.2 Operaciones sobre arrays
134
137
5. Operador de rango
138
6. Operadores de pertenencia
138
7. Operador de sustitución
139
7.1 Sustitución con la ayuda de una expresión regular
7.2 Sustitución aplicada sobre un array
140
140
8. Operadores de tipo
142
9. Operadores lógicos
142
www.ediciones-eni.com
© Ediciones ENI
5/18
Windows PowerShell
Los fundamentos del lenguaje
10. Operadores binarios
143
11. Operadores de asignación
144
12. Operadores de redirección
146
13. Operadores de partición y de concatenación
148
14. Operador de formato -f
149
14.1 Nociones básicas
14.2 Ir más allá con los formatos de cadenas
15. Resumen de operadores
149
150
151
Arrays
1. Introducción
155
2. Arrays de una dimensión
155
2.1 Inicializar un array vacío
2.2 Inicializar un array con valores
2.3 Leer un array de una dimensión
2.4 Concatenar dos arrays
2.5 Añadir un elemento a un array
2.6 Modificar el valor de un elemento
2.7 Eliminar un elemento
2.8 Determinar el número de elementos de un array
2.9 Convertir en cadena el contenido de un array
3. Arrays de varias dimensiones
www.ediciones-eni.com
156
157
158
159
159
159
160
161
161
161
© Ediciones ENI
6/18
Windows PowerShell
Los fundamentos del lenguaje
4. Arrays asociativos
164
4.1 Arrays asociativos estándares
4.1.1 Declarar un array asociativo vacío
4.1.2 Inicializar un array asociativo con datos
4.1.3 Añadir datos a un array asociativo
4.1.4 Recorrer un array asociativo
4.2 Arrays asociativos ordenados
164
164
164
165
166
167
Bucles y condiciones
1. Los bucles
169
1.1 Bucle While
1.2 Bucle Do-While
1.3 Bucle For
1.4 Bucle Foreach
1.4.1 Primera técnica
1.4.2 Segunda técnica
169
170
170
171
171
172
2. Estructura condicional If, Else, ElseIf
174
3. Switch
176
Funciones y scripts
1. Funciones
179
1.1 Estructura de una función
1.2 Uso de argumentos
1.3 Uso de parámetros
1.4 Retorno de valores
1.4.1 Devolver un valor escalar
1.4.2 Devolver un objeto
www.ediciones-eni.com
179
180
181
183
183
183
© Ediciones ENI
7/18
Windows PowerShell
Los fundamentos del lenguaje
1.5 Funciones filtros
1.6 Introducción a las funciones avanzadas
2. Scripts
185
187
189
2.1 Estructuración de un script
2.2 Comentarios
2.3 Ejecución de un script
2.4 La directiva #Requires
2.5 Toma de contacto del entorno de ejecución (contexto)
2.6 Internacionalización
189
190
190
191
192
195
3. DotSourcing
198
4. Ayuda integrada a los scripts y funciones
199
Gestión de archivos y fechas
1. La gestión de archivos
205
1.1 Envío de datos en un archivo
1.1.1 Archivos de texto con Out-File
1.1.2 Redirección del flujo estándar
1.1.3 Creación de archivos binarios con Set-Content
1.2 Lectura de datos con Get-Content
1.3 Búsqueda en el contenido con Select-String
1.4 Gestión de archivos CSV
1.4.1 Importación/exportación de datos
1.4.2 Conversión de datos al formato CSV
1.4.3 Conversión de datos a partir del formato CSV
1.5 Gestión de archivos XML
1.5.1 Carga de un archivo XML
1.5.2 Gestión del contenido
1.5.3 Serialización/deserialización con los comandos *-CliXML
1.6 Exportar datos como página HTML
1.7 Exportar datos con Out-GridView
www.ediciones-eni.com
© Ediciones ENI
206
207
209
211
215
220
226
226
230
231
233
235
235
236
238
243
8/18
Windows PowerShell
Los fundamentos del lenguaje
2. Fechas
245
2.1 Manipulación de los objetos DateTime
2.2 Formateo de fechas
2.2.1 Formatos estándares
2.2.2 Formatos personalizados
2.3 Manipulación de fechas
2.3.1 Crear una fecha
2.3.2 Modificar una fecha
2.3.3 Comparar fechas
2.3.4 Calcular un intervalo entre dos fechas
2.3.5 Conversión de una fecha expresada en ticks
246
249
251
252
256
256
256
257
257
258
Perfiles PowerShell
1. Introducción
261
2. Perfiles disponibles
262
3. Orden de aplicación de perfiles
264
4. Creación de un perfil
264
5. Personalización del entorno
265
5.1 Modificación del prompt
5.1.1 Un prompt con mucho color
5.1.2 Un prompt siempre en hora
5.2 Modificación del tamaño de la ventana
5.3 Modificación de los colores
5.4 Modificación del título de la ventana
5.5 Añadir un mensaje de bienvenida personalizado
5.6 Perfil completo
www.ediciones-eni.com
© Ediciones ENI
265
267
267
268
269
270
271
272
9/18
Windows PowerShell
Los fundamentos del lenguaje
6. Ejecutar PowerShell sin perfil
274
Módulos y snap-ins
1. Introducción
275
2. Los snap-ins
275
2.1 Enumerar los snap-ins instalados
2.2 Importar un snap-in
2.3 Enumerar los comandos de un snap-in
2.4 Descargar un snap-in
3. Los módulos
276
277
278
279
279
3.1 Instalar un módulo
3.2 Enumerar e importar los módulos
3.2.1 Prefijar los comandos de un módulo
3.3 Enumerar los comandos de un módulo
3.4 Seguir el uso de los módulos
3.5 Descargar un módulo
280
281
288
289
289
292
Gestión de los errores
1. Introducción a la gestión de errores y a la depuración
293
2. La gestión de los errores
294
3. Los errores no críticos
294
3.1 Variable de opciones: $ErrorActionPreference
3.2 El parámetro -ErrorAction y los parámetros comunes
3.3 Almacenamiento de errores
3.4 El tipo ErrorRecord
www.ediciones-eni.com
© Ediciones ENI
294
296
299
300
10/18
Windows PowerShell
Los fundamentos del lenguaje
3.5 Redirección de la visualización de los mensajes de error
3.5.1 Redirección a un archivo de texto
3.5.2 Redirección a una variable
3.5.3 Redirección de errores hacia $null
3.6 Intercepción de errores no críticos
3.6.1 Caso general
3.6.2 Caso de ejecutables externos
4. Los errores críticos
302
303
303
304
304
304
304
305
4.1 Intercepción de errores críticos con trap
4.2 Intercepción de errores críticos con Try-Catch-Finally
4.3 Determinar el tipo de errores críticos
4.4 Generación de excepciones personalizadas
5. La depuración
305
313
315
316
316
5.1 Visualización de mensajes en modo verbose
5.2 Visualización de mensajes en modo debug
5.3 Visualización de mensajes en modo warning
5.4 Forzar la declaración de variables
5.5 Ejecución paso a paso
5.5.1 En la consola PowerShell clásica
5.5.2 En la consola PowerShell ISE
5.6 Modo traza de Set-PSDebug
5.7 Trace-Command
317
318
318
319
321
321
326
327
330
Seguridad
1. La seguridad: ¿ para quién ? ¿ Por qué ?
337
2. Los riesgos vinculados al scripting
337
3. Optimizar la seguridad de PowerShell
338
3.1 La seguridad de PowerShell por defecto
www.ediciones-eni.com
© Ediciones ENI
338
11/18
Windows PowerShell
Los fundamentos del lenguaje
3.2 Las directivas de ejecución
3.2.1 Las diferentes directivas de ejecución
3.2.2 Los ámbitos de las directivas de ejecución
3.2.3 Identificar la directiva de ejecución actual
3.2.4 Aplicar una directiva de ejecución
3.3 Scripts descargados de Internet
3.4 Los Alternate Data Streams (ADS)
3.4.1 Los origines
3.4.2 Crear y leer los ADS
3.4.3 Observar y comprender los ADS de sus archivos .ps1
3.4.4 Modificar el ZoneId o cómo transformar un script remoto en un script local
3.5 Cadenas securizadas
3.5.1 Securizar una cadena
3.5.2 Leer una cadena securizada
3.6 Cifrado
3.6.1 Cifrar una cadena
3.6.2 Descifrar una cadena
3.7 Gestión de credenciales
3.8 Solicitar la introducción de una contraseña de forma segura
3.8.1 Uso del comando Read-Host
3.8.2 Uso del comando Get-Credential
4. Firma de scripts
339
339
342
342
343
345
347
347
348
349
351
351
352
356
357
360
362
363
367
367
367
368
4.1 Las firmas digitales
4.2 Los certificados
4.2.1 Comprar un certificado
4.2.2 Crear un certificado auto firmado
4.3 Firmar su primer script
4.4 Ejecutar scripts firmados
5. Gestionar las directivas de ejecución de PowerShell mediante las directivas de grupo
368
369
369
369
376
378
379
Objetos .NET
www.ediciones-eni.com
© Ediciones ENI
12/18
Windows PowerShell
Los fundamentos del lenguaje
1. Introducción a .NET
385
2. El framework .NET
386
3. Utilizar objetos .NET con PowerShell
387
3.1 Crear una instancia de tipo (Objeto)
3.2 Los assemblies
3.3 Cargar un assembly
3.4 Enumerar los tipos contenidos en los assemblies
4. Sacar partido de la potencia de .NET
390
394
396
397
399
4.1 Wake-on-LAN
4.2 Comprimir un archivo
4.3 Crear un tooltip con información contextual (Balloon Tip)
399
400
402
CIM/WMI
1. Introducción
405
2. Estándares, y más estándares, pero ¿ para hacer qué ?
406
2.1 ¿ Que es WMI ?
2.2 ¿ Que es CIM ?
2.3 CIM vs WMI
2.4 Y concretamente ¿ qué podemos hacer ?
2.4.1 Configuración de servidores DELL mediante iDRAC
2.4.2 Gestión de sistemas operativos Linux desde Windows
2.4.3 Gestión de Windows Server 2012/R2 desde Linux
2.5 Dificultades que superar
3. Arquitectura general y terminología
www.ediciones-eni.com
407
407
408
408
408
409
409
409
410
© Ediciones ENI
13/18
Windows PowerShell
Los fundamentos del lenguaje
4. Comandos de la familia CIM
412
4.1 Conjunto de comandos
4.2 Descubrimiento de clases
4.2.1 Enumerar todas las clases
4.2.2 Buscar clases con una determinada palabra
4.3 Descubrimiento de los miembros de una clase
4.3.1 Enumerar los miembros de una clase
4.3.2 Buscar miembros de una clase
4.4 Recuperar una o varias instancias
4.5 Recuperar una o varias instancias con un filtro QL/CQL
4.6 Invocar un método
5. Comandos de la familia WMI
421
5.1 Búsqueda de clases y miembros
5.2 Recuperar una o varias instancias
6. Establecer sesiones con equipos remotos
6.1
6.2
6.3
6.4
Comando New-CimSession
Comando New-CimSessionOption
Comando Get-CimSession
Comando Remove-CimSession
7. Monitoring de los recursos con la gestión de eventos
7.1 Vigilar la creación de un proceso local
7.2 Vigilar la creación de un proceso en un equipo remoto
7.3 Vigilar el espacio ocupado de un disco duro en un servidor remoto
7.4 Monitorizar la supresión de archivos
7.5 Algunas explicaciones complementarias
8. Gestión basada en las URI (Uniform Resource Identifier)
8.1 Anatomía de una URI
8.2 Conjunto de comandos PowerShell
8.2.1 Conjunto de comandos de la familia WSMan
8.2.2 Conjunto de comandos de la familia CIM
www.ediciones-eni.com
412
413
414
414
415
416
417
418
419
421
© Ediciones ENI
423
424
426
426
427
428
428
429
429
431
434
435
435
436
437
438
438
439
14/18
Windows PowerShell
Los fundamentos del lenguaje
8.3 Prueba de la correcta configuración de un sistema
8.4 Envío de consultas CIM/WMI mediante una URI
8.4.1 Enumerar los servicios de un equipo remoto
8.4.2 Determinar la fecha de instalación de un equipo remoto
9. Caja de herramientas gráfica para la exploración de la base CIM/WMI
9.1 Tester WMI (Wbemtest.exe)
9.2 CIM Studio
9.3 SAPIEN WMI Explorer 2015
439
440
440
441
443
443
444
445
Ejecución remota
1. Introducción
447
2. Comunicaciones remotas del framework .NET
448
2.1 Requisitos
2.2 Determinar los comandos remotos del framework .NET
2.3 El conjunto de comandos
2.4 Envío de comandos remotos
3. Comunicaciones remotas de Windows PowerShell
3.1 Requisitos
3.2 Configuración manual del servicio WinRM en un entorno Active Directory
3.2.1 Activación del servicio WinRM
3.2.2 Comunicar con HTTPS
3.2.3 Cambiar los puertos de escucha
3.2.4 Mecanismos de autenticación
3.3 Configuración del servicio WinRM en un entorno Active Directory por GPO
3.4 Configuración del servicio WinRM en un entorno Workgroup
3.4.1 Configuración de la lista de equipos de confianza (trusted hosts list)
3.4.2 Desactivación de la UAC
3.5 Problemática del "doble salto" (noción de rebote)
3.6 Gestión de las configuraciones de sesiones
3.6.1 Generalidades
www.ediciones-eni.com
© Ediciones ENI
449
449
451
452
454
455
457
457
461
463
465
466
469
469
470
471
472
472
15/18
Windows PowerShell
Los fundamentos del lenguaje
3.6.2 Configuraciones de sesión por defecto
3.6.3 Modificación de permisos
3.6.4 Creación de una configuración de sesión personalizada
3.6.5 Creación de una configuración de sesión delegada (RunAs)
3.7 Creación de una sesión remota
3.8 Ejecución de comandos remotos
3.9 Sesiones WinRM en modo desconectado
3.10 Ejecución de scripts remotos
3.11 Apertura de una sesión remota interactiva PowerShell
3.11.1 Enter-PSSession
3.11.2 PowerShell ISE (Integrated Scripting Environment)
3.12 Importación de comandos remotos
475
477
478
486
488
490
492
493
498
498
501
501
Casos de estudio
1. Encontrar las cuentas de equipo caducadas dentro del AD DS
1.1 Problemática
1.2 Dificultades que superar
1.3 Solución
505
505
506
506
2. Enumerar las cuentas de usuario inactivas en el AD DS
2.1 Problemática
2.2 Solución: ¡hacer limpieza!
508
508
508
3. Cambiar la contraseña de Administrador local remotamente
512
3.1 Problemática
3.2 Dificultades que superar
3.3 Solución 1: DCOM/RPC
3.4 Solución 2: WSMan/WinRM
512
513
513
515
4. Vigilar el registro de un evento en el log
516
4.1 Problemática
4.2 Solución
www.ediciones-eni.com
516
516
© Ediciones ENI
16/18
Windows PowerShell
Los fundamentos del lenguaje
5. Crear cuentas de usuarios por lote
520
5.1 Problemática
5.2 Solución
520
520
6. Verificar la versión software de una aplicación remota
6.1 Problemática
6.2 Solución
523
523
524
7. Actualizar la configuración de red de un conjunto de equipos
7.1 Problemática
7.2 Solución
7.3 Prueba de la solución
526
526
527
529
8. Encontrar los certificados caducados
533
8.1 Problemática
8.2 Solución 1: Tarea planificada local PowerShell
8.3 Solución 2: Consulta desde un punto central
9. Delegar la gestión de un servidor (solamente algunos comandos)
9.1 Problemática
9.2 Solución
533
533
537
538
538
538
Recursos adicionales
1. Recursos Web
545
1.1 Sitios Web en español
1.1.1 IT Pro.es: comunidad de profesionales de Infraestructura
1.1.2 Aprende Informática Conmigo
1.2 Sitios Web en inglés
1.2.1 Windows PowerShell Blog
1.2.2 PowerShell Magazine
1.2.3 PowerShell.org
www.ediciones-eni.com
© Ediciones ENI
545
545
547
548
548
549
550
17/18
Windows PowerShell
Los fundamentos del lenguaje
1.2.4 PowerShell.com
1.2.5 Get-Scripting
1.2.6 CodePlex/GitHub
551
552
553
2. Herramientas de terceros
554
2.1 PowerGUI
2.2 PowerShell Plus
2.3 PowerShell Studio 2015
2.4 PowerGadget
2.5 ISE Steroids
554
555
556
557
558
Anexos
1. Lista de comandos PowerShell v3 en Windows Server 2012
561
2. Lista de los alias
566
3. Lista de los módulos Windows Server 2012
569
4. Lista de los módulos Windows 8
570
5. Lista de los orígenes de traza (Get-TraceSource)
571
6. Sintaxis de las expresiones regulares
572
7. Lista de verbos aprobados (Get-Verb)
574
índice
577
www.ediciones-eni.com
© Ediciones ENI
18/18
Descargar