Diccionario

Cmdlet

Un comando de PowerShell con nombre del tipo Verbo-Sustantivo, como Get-Process, que devuelve objetos en lugar de texto.

Los cmdlets son los comandos nativos de PowerShell: Get-Service, Stop-Process, Copy-Item… El verbo indica la acción y el sustantivo, el objeto sobre el que actúa.

Devuelven objetos con propiedades, de modo que otro cmdlet puede ordenarlos, filtrarlos o exportarlos sin tener que recortar texto.

Un ejemplo

Get-Process | Sort-Object CPU -Descending lista los procesos ordenados por uso de procesador.

Por qué importa

Los cmdlets son la base de PowerShell y su principal diferencia con otras shells. Siguen siempre el patrón Verbo-Sustantivo con verbos estándar (Get, Set, New, Remove, Start, Stop), de modo que, una vez aprendes unos pocos, puedes adivinar el nombre de muchos otros: si existe Get-Service, probablemente exista Stop-Service. Esa coherencia hace el aprendizaje mucho más fácil que en shells donde cada comando tiene un nombre arbitrario.

Para descubrir qué hacen, PowerShell incluye Get-Command (buscar cmdlets), Get-Help (ver su documentación con ejemplos) y Get-Member (ver las propiedades y métodos de lo que devuelven). Con ellos puedes explorar el sistema sin salir de la terminal, administrar servicios, procesos, archivos o el registro, y enlazar todo con la tubería para crear tareas complejas con pocas líneas.

Confusiones frecuentes

Se confunde un cmdlet con cualquier comando que ejecutes en PowerShell. También puedes lanzar programas externos (ping, git), que son ejecutables normales y devuelven texto, no objetos. Otro punto de confusión es creer que los cmdlets distinguen mayúsculas: no lo hacen, get-process y Get-Process son iguales. Y muchos usuarios no saben que existen alias como ls, cat o ps que en realidad llaman a cmdlets (Get-ChildItem, Get-Content, Get-Process), por lo que se comportan distinto de sus homónimos de Linux.

Preguntas frecuentes

¿Cómo veo la ayuda de un cmdlet?

Con Get-Help NombreDelCmdlet, y añadiendo -Examples para ver ejemplos de uso. Si es la primera vez, puede pedirte actualizar la ayuda con Update-Help.

¿Cómo encuentro un cmdlet para lo que necesito?

Con Get-Command *palabra*, por ejemplo Get-Command *service*, que lista los cmdlets cuyo nombre contiene esa palabra.