En PowerShell, los pipelines son una característica poderosa que permite encadenar comandos de manera que la salida de un comando se convierta en la entrada de otro. Esta capacidad es fundamental para la manipulación eficiente de objetos y datos en PowerShell.
Conceptos Clave
- Pipeline (
|
): El operador de pipeline (|
) se utiliza para pasar la salida de un comando como entrada a otro comando. - Cmdlets: Los cmdlets son comandos de PowerShell que realizan una acción específica. Los cmdlets pueden aceptar y devolver objetos.
- Objetos: En PowerShell, casi todo es un objeto. Los objetos tienen propiedades y métodos que se pueden manipular.
Ejemplo Básico de Pipeline
En este ejemplo:
Get-Process
obtiene una lista de todos los procesos en ejecución.Where-Object
filtra estos procesos para devolver solo aquellos cuyo uso de CPU es mayor que 100.
Desglose del Ejemplo
- Get-Process: Este cmdlet obtiene todos los procesos en ejecución y devuelve una colección de objetos de proceso.
- Where-Object: Este cmdlet filtra objetos en función de una condición. La variable automática
$_
representa el objeto actual en el pipeline.
Manipulación de Objetos en el Pipeline
Selección de Propiedades
A menudo, solo necesitas ciertas propiedades de los objetos que estás manipulando. Puedes usar Select-Object
para seleccionar propiedades específicas.
Este comando:
- Obtiene todos los procesos.
- Selecciona solo las propiedades
Name
yCPU
de cada proceso.
Ordenación de Objetos
Puedes ordenar objetos en el pipeline usando Sort-Object
.
Este comando:
- Obtiene todos los procesos.
- Ordena los procesos por la propiedad
CPU
en orden descendente.
Agrupación de Objetos
Para agrupar objetos por una propiedad específica, usa Group-Object
.
Este comando:
- Obtiene todos los procesos.
- Agrupa los procesos por la propiedad
PriorityClass
.
Ejemplo Completo
Combina varios cmdlets en un pipeline para realizar una tarea más compleja.
Get-Process | Where-Object { $_.CPU -gt 100 } | Sort-Object CPU -Descending | Select-Object Name, CPU
Este comando:
- Obtiene todos los procesos.
- Filtra los procesos para incluir solo aquellos con un uso de CPU mayor que 100.
- Ordena los procesos filtrados por uso de CPU en orden descendente.
- Selecciona solo las propiedades
Name
yCPU
de los procesos ordenados.
Ejercicio Práctico
Ejercicio 1
Objetivo: Filtrar, ordenar y seleccionar propiedades de los servicios en ejecución.
Instrucciones:
- Obtén una lista de todos los servicios en ejecución.
- Filtra los servicios para incluir solo aquellos cuyo estado es "Running".
- Ordena los servicios por el nombre del servicio en orden ascendente.
- Selecciona las propiedades
DisplayName
yStatus
.
Solución:
Get-Service | Where-Object { $_.Status -eq 'Running' } | Sort-Object DisplayName | Select-Object DisplayName, Status
Ejercicio 2
Objetivo: Agrupar y contar procesos por nombre de usuario.
Instrucciones:
- Obtén una lista de todos los procesos en ejecución.
- Agrupa los procesos por el nombre del usuario que los ejecuta.
- Selecciona las propiedades
Name
yCount
.
Solución:
Resumen
En esta sección, hemos aprendido sobre el uso de pipelines en PowerShell para manipular objetos de manera eficiente. Hemos cubierto cómo filtrar, ordenar, seleccionar y agrupar objetos utilizando cmdlets como Where-Object
, Sort-Object
, Select-Object
y Group-Object
. Estos conceptos son fundamentales para trabajar con datos en PowerShell y permiten realizar tareas complejas de manera sencilla y eficiente.
En el próximo tema, profundizaremos en el filtrado y la selección de objetos, explorando técnicas avanzadas para manejar datos en PowerShell.
Curso de PowerShell
Módulo 1: Introducción a PowerShell
- ¿Qué es PowerShell?
- Instalación y Configuración de PowerShell
- Consola de PowerShell e ISE
- Comandos Básicos y Sintaxis
- Sistema de Ayuda en PowerShell
Módulo 2: Scripting Básico
- Variables y Tipos de Datos
- Operadores en PowerShell
- Sentencias Condicionales
- Bucles en PowerShell
- Funciones y Scripts
Módulo 3: Trabajando con Objetos
- Entendiendo los Objetos
- Propiedades y Métodos de los Objetos
- Pipelines y Manipulación de Objetos
- Filtrado y Selección de Objetos
- Ordenación y Agrupación de Objetos
Módulo 4: Técnicas Avanzadas de Scripting
- Manejo de Errores
- Depuración de Scripts
- Expresiones Regulares
- Trabajando con Archivos y Directorios
- Uso de Módulos y Snap-ins
Módulo 5: Automatización y Programación de Tareas
- Introducción a la Automatización
- Creación de Tareas Programadas
- Uso de PowerShell para Administración del Sistema
- Automatización de Tareas de Active Directory
- Automatización de Tareas de Red
Módulo 6: PowerShell Remoting
- Introducción al Remoting
- Configuración del Remoting
- Uso de Invoke-Command
- Gestión de Sesiones
- Consideraciones de Seguridad
Módulo 7: Funcionalidades Avanzadas de PowerShell
- Perfiles de PowerShell
- Personalización del Entorno de PowerShell
- Creación y Uso de Clases
- Trabajando con XML y JSON
- Uso de PowerShell con REST APIs
Módulo 8: PowerShell y DevOps
- Introducción a DevOps
- Uso de PowerShell con Pipelines de CI/CD
- Infraestructura como Código (IaC)
- Gestión de Recursos en la Nube con PowerShell
- PowerShell y Docker