Curso de PowerShell gratuito (enero 2025)

1. Las bases de PowerShell

El vínculo entre PowerShell y .NET

PowerShell está profundamente integrado con .NET, lo que lo convierte en una herramienta extremadamente poderosa para interactuar con el sistema operativo y otros recursos. Esta integración permite acceder a clases, métodos y propiedades de .NET directamente desde PowerShell, ofreciendo un control avanzado sobre diversas operaciones.

Por ejemplo, se puede utilizar la clase DateTime de .NET para obtener información sobre la fecha y hora actuales:
[crayon-6a617b36bd82e116433672/]
También puedes usar objetos más avanzados como System.IO para trabajar con archivos:
[crayon-6a617b36bd834423241708/]

Cmdlets: principio y uso

Los cmdlets son comandos predefinidos diseñados para realizar tareas específicas. Están escritos en .NET y ofrecen una sintaxis simple para interactuar con el sistema. Los cmdlets tienen un formato estándar de verbo-sustantivo, como Get-Process (obtener procesos) o Set-Item (configurar un elemento).
[crayon-6a617b36bd836581213010/]

Tuberías

La tubería en PowerShell permite encadenar cmdlets, de forma que la salida de un comando se convierte en la entrada de otro. Esto simplifica la creación de flujos de trabajo complejos.
[crayon-6a617b36bd838408405020/]
La variable $PipelineVariable se puede usar para almacenar temporalmente datos intermedios dentro de la tubería:
[crayon-6a617b36bd839246281009/]

Filtros y bucles

PowerShell incluye filtros como Where-Object para evaluar condiciones y bucles como ForEach-Object para iterar sobre colecciones.
[crayon-6a617b36bd83b945278268/]

Windows ISE

El entorno integrado de scripts (ISE) de PowerShell es una herramienta poderosa para escribir, depurar y ejecutar scripts. Ofrece características como:

  • Coloreado de sintaxis.
  • Finalización automática de comandos.
  • Ventanas múltiples para trabajar con diferentes scripts a la vez.

Puedes abrir el ISE ejecutando:
[crayon-6a617b36bd83c309952744/]

2. Tipos y operadores

Sistema de clasificación

En PowerShell, las variables pueden almacenar datos de diferentes tipos sin necesidad de declarar el tipo explícitamente. Sin embargo, puedes definir el tipo si lo deseas:
[crayon-6a617b36bd83d589095438/]
El sistema de clasificación incluye tipos como:

  • [string]: Cadenas de texto.
  • [int]: Números enteros.
  • [datetime]: Fechas y horas.
  • [array]: Listas o colecciones.

Expresiones regulares

PowerShell soporta expresiones regulares para buscar patrones en texto. Ejemplo:
[crayon-6a617b36bd83f411140034/]
Usar expresiones regulares para reemplazar texto:
[crayon-6a617b36bd840618396780/]

Operadores

PowerShell incluye diversos operadores para realizar operaciones matemáticas, comparaciones y manipulaciones de texto:

  • Aritméticos: +, -, *, /
  • Comparación: -eq, -ne, -gt, -lt, -like
  • Lógicos: -and, -or, -not

[crayon-6a617b36bd842708994769/]

3. Estructuras de control y funciones

Estructuras de control

Las estructuras de control en PowerShell permiten gestionar el flujo del script según condiciones:
[crayon-6a617b36bd843694070398/]

Funciones

Las funciones en PowerShell encapsulan lógica reutilizable:
[crayon-6a617b36bd844974099035/]

4. Utilización de cmdlets y módulos

Gestión de archivos

PowerShell facilita la gestión de archivos mediante cmdlets especializados como Compress-Archive y Expand-Archive, que permiten comprimir y descomprimir archivos directamente.
[crayon-6a617b36bd845475933532/]

Cmdlets para web

Cmdlets como Invoke-WebRequest e Invoke-RestMethod son ideales para interactuar con servicios web, descargar archivos y trabajar con APIs REST.
[crayon-6a617b36bd847243431522/]

Ejemplo práctico

Un ejemplo práctico de recuperación de un canal RSS:
[crayon-6a617b36bd848442696049/]

5. Utilización de objetos CIM

Métodos y propiedades WMI

PowerShell permite interactuar con objetos CIM (Common Information Model) para obtener información y realizar configuraciones en el sistema operativo. Por ejemplo, puedes usar Get-CimInstance para consultar clases WMI:
[crayon-6a617b36bd849388281592/]
Comparar Get-CimInstance con el cmdlet más antiguo Get-WmiObject:
[crayon-6a617b36bd84a835638587/]

6. Uso de .NET y COM

Clases de .NET

PowerShell permite utilizar clases .NET directamente para realizar operaciones avanzadas, como pings y autenticación.
[crayon-6a617b36bd84c457973305/]

Interfaces gráficas

PowerShell puede usar XAML para crear interfaces gráficas simples. Ejemplo básico:
[crayon-6a617b36bd84d725373789/]

Ejemplo práctico

Crear un formulario utilizando XAML:
[crayon-6a617b36bd84e407294181/]

7. Gestión de módulos y paquetes de PowerShell

Funcionamiento de módulos

Los módulos en PowerShell son colecciones de cmdlets, funciones, variables y recursos que permiten extender sus capacidades. Para trabajar con módulos:
[crayon-6a617b36bd84f922440438/]

Ejemplo práctico

Crear un usuario en Active Directory:
[crayon-6a617b36bd851482326867/]

8. Los objetos COM

Introducción a los objetos COM

Los objetos COM (Component Object Model) permiten interactuar con aplicaciones de Windows como Excel, Word y PowerPoint. Ejemplo de creación y manipulación de un libro de Excel:
[crayon-6a617b36bd852728559251/]

Ejemplo práctico

Recuperar datos de servidores y exportarlos a Excel:
[crayon-6a617b36bd853364693293/]

9. Algunas cosas más de PowerShell

Cmdlets Útiles

PowerShell tiene varios cmdlets menos conocidos pero muy útiles:
[crayon-6a617b36bd854392449607/]

Ejemplo práctico

Crear un generador de contraseñas:
[crayon-6a617b36bd856481669897/]