La línea de comandos orientada a objetos de PowerShell
La mayor diferencia entre PowerShell y las líneas de comandos tradicionales (como CMD o Bash) es que la salida de los comandos de PowerShell son objetos, no texto plano.
PowerShell es más flexible y potente que las líneas de comandos tradicionales, y también hace que la escritura de scripts y la administración del sistema sean más eficientes.
¿Qué es una "línea de comandos orientada a objetos"?
En las líneas de comandos tradicionales, lo que se transmite entre comandos a través de la canalización|son cadenas de texto; para procesar estos textos más a fondo, normalmente se necesitan herramientas como grep, awk, sed, etc.
En cambio, en PowerShell, lo que se transmite entre comandos a través de la canalización son objetos. Se puede acceder directamente a las propiedades y métodos de los objetos sin necesidad de analizar el texto, lo que mejora enormemente la precisión y la eficiencia del desarrollo.
La salida de los comandos son objetos
conGet-ProcessTomando el comando como ejemplo:
Get-Process
Este comando se utiliza para obtener la lista de procesos que se están ejecutando en el sistema actual.
El comando Get-Process no devuelve una tabla de texto plano, sino un conjunto de objetos .NET; cada proceso es un objeto de tipo System.Diagnostics.Process.
Podemos acceder a sus propiedades de la misma manera que se accede a los objetos en los lenguajes de programación, por ejemplo:
(Get-Process)[0].Name
El comando anterior obtiene el nombre del primer proceso. Ejemplo de salida:
explorer
Ver la estructura de un objeto: Get-Member
Para comprender los objetos a fondo, la clave está en conocer qué propiedades y métodos tienen. PowerShell proporcionaGet-Memberun comando para ayudarnos a explorar la estructura de los objetos:
Get-Process | Get-Member
Parte de la salida de ejemplo:
Name MemberType Definition
---- ---------- ----------
Id Property int Id {get;}
Name Property string Name {get;}
Kill Method void Kill()
Start Method void Start()
Explicación:
Propertyindica las propiedades del objeto, comoId、NameMethodindica los métodos del objeto, comoKill()、Start()
Puedes usar estos miembros enobjeto.atributooobjeto.método()la forma [objeto].[miembro].
Transmisión de objetos por canalización
Lo que se transmite por la canalización son objetos
En PowerShell, cuando varios comandos se conectan mediante|la canalización, lo que se transmite sonobjetosy no texto.
Esto significa que en los comandos posteriores puedes acceder directamente a las propiedades de los objetos transmitidos por el comando anterior.
Ejemplo: filtrar todos los serviciosRunningcuyo estado sea:
Get-Service | Where-Object { $_.Status -eq 'Running' }
Interpretación:
$_representa el objeto actual en la canalizaciónStatuses una propiedad del objeto de servicio
Diagrama de flujo de la operación de canalización (Mermaid)

Comandos comunes para el procesamiento de objetos
PowerShell proporciona una serie de comandos integrados para operar con objetos, utilizados comúnmente en escenarios como filtrado, ordenación, agrupación, exportación, etc.:
| Comando | Descripción de la función |
|---|---|
Where-Object |
Filtrar objetos por condiciones |
Select-Object |
Seleccionar o renombrar propiedades de objetos |
Sort-Object |
Ordenar objetos según una propiedad |
Group-Object |
Agrupar y contar objetos por propiedad |
Measure-Object |
Calcular cantidad, suma, promedio, etc., de objetos |
Export-Csv |
Exportar objetos a un archivo CSV |
ConvertTo-Json |
Convertir objetos a una cadena en formato JSON |
Filtrado de propiedades de objetos y columnas calculadas
Seleccionar propiedades específicas
Get-Process | Select-Object Name, Id, CPU
Este comando extrae el nombre, el ID y el uso de CPU de cada proceso.
Agregar columnas calculadas (propiedades personalizadas)
Puedes agregar propiedades personalizadas mediante bloques de script:
Get-Process | Select-Object Name, @{Name="MemoryMB";Expression={$_.WorkingSet / 1MB -as [int]}}
Explicación:
@{}Crear una tabla hash para definir la nueva propiedadNameEspecificar el nombre de la nueva columnaExpressionProporcionar la lógica de cálculo
Operaciones de ordenación y agrupación
Ordenar los procesos por uso de CPU
Get-Process | Sort-Object CPU -Descending
Agrupar por estado del servicio
Get-Service | Group-Object Status
Ejemplo de salida:
Count Name Group
----- ---- -----
75 Running {WinDefend, WSearch, ...}
35 Stopped {Fax, Spooler, ...}
Exportación y datos estructurados
Exportar a un archivo CSV
Get-Service | Select-Object Name, Status | Export-Csv -Path services.csv -NoTypeInformation
Convertir a formato JSON
Get-Service | ConvertTo-Json
Estos formatos facilitan la integración con otros sistemas o API y son una parte importante de los flujos de trabajo automatizados.
Casos prácticos típicos
Caso 1: Encontrar los 5 procesos que más consumen CPU
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 Name, CPU
Caso 2: Contar la cantidad según el estado del servicio
Get-Service | Group-Object Status | Select-Object Name, Count
Resumen y sugerencias
La característica orientada a objetos de PowerShell hace que las operaciones de línea de comandos se ajusten más al pensamiento de programación. A través de las propiedades y métodos de los objetos, los usuarios pueden operar los recursos del sistema con mayor precisión y construir scripts de automatización más potentes y fiables.
Se recomienda a los principiantes consolidar conocimientos desde los siguientes aspectos:
- Usar con frecuencia
Get-Memberpara explorar la estructura de los objetos - Dominar
Where-ObjectySelect-Objectel uso de: - Intentar usar
Group-Object、Sort-Objectpara procesar datos - Intentar exportar los resultados de los comandos a archivos CSV o JSON