Pide tu presupuesto ya!
6th November 2024
Una característica que distingue a PowerShell de otros lenguajes es la canalización. La canalización es una forma de “canalizar” o enviar la salida de un comando directamente a otro sin código intermedio.
Esta capacidad le permite encadenar comandos en una sola línea, lo que permite la ejecución eficiente de tareas complejas.
Antes de comenzar a encadenar comandos, es esencial comprender el concepto de canalización de PowerShell. La canalización permite un flujo de datos fluido entre comandos, lo que le permite encadenarlos en una sola línea.
Para demostrar la canalización, comencemos con un comando común: Get-Service.
Get-Service devuelve todos los servicios de Windows en su sistema local.
Si desea comprobar el estado del servicio de Windows Update, puede utilizar:
$serviceName="wuauserv"
Get-Service -Name $serviceName

Ahora, para detener un servicio, ejecute el Stop-Service dominio.
Stop-Service -Name $serviceName
Este enfoque funciona, pero existe cierta duplicación. Seguir el principio DRY (No repetirse) es la mejor práctica al escribir código.
En lugar de definir el nombre del servicio dos veces, puede simplificar el proceso. En este caso, Get-Service consulta el servicio y luego lo canaliza a Stop-Service.
Desde Stop-Service entiende la salida de Get-ServicePowerShell maneja la tarea sin problemas.
Get-Service -Name 'wuauserv' | Stop-Service
También puede canalizar el nombre del servicio directamente a Get-Service y omitir especificar el Name parámetro:
Este ejemplo muestra cuán eficiente puede ser la canalización.
'wuauserv' | Get-Service | Stop-Service
Imagínate lo que pasaría si hicieras esto. PowerShell intentaría detener todos los servicios en su máquina, lo que normalmente no es el resultado deseado.
Get-Service | Stop-Service
Si desea encontrar el estado de varios servicios enumerados en un archivo de texto, puede utilizar Get-Content para leer el archivo y enviar el contenido al Get-Service cmdlet:
Get-Content -Path C:\services.txt | Get-Service

Muchos comandos en PowerShell admiten la canalización, pero no todos, y saber cuáles lo hacen es crucial.
Para comprobar si un comando admite la entrada de canalización, utilice Get-Help con el Full parámetro:
Get-Help -Name Stop-Service -Full

Al desplazarse hacia abajo, verá el InputObject parámetro, que acepta la entrada de canalización por valor.
Este comportamiento significa que el parámetro toma todo el objeto desde Get-Service en lugar de simplemente un nombre de propiedad.

A continuación se muestra un ejemplo de un comando que no admite la entrada de canalización:

Mientras Get-Service funciona como se esperaba:

A través de este tutorial, ha aprendido a encadenar comandos sin problemas, reduciendo la redundancia y adhiriéndose a las mejores prácticas como el principio DRY. Ha visto cómo combinar canalizaciones con cmdlets comunes como Get-Service, Stop-Servicey Get-Content para realizar tareas de forma más concisa y eficaz.
Comprender y aprovechar el proceso es fundamental para cualquiera que busque aprovechar todo el potencial de PowerShell. Explorando las capacidades de canalización de varios cmdlets usando Get-Helppuede continuar ampliando su dominio de PowerShell y optimizar sus flujos de trabajo.
¡Adopte el proceso de PowerShell para hacer que sus scripts sean más eficientes y potentes!
Leave a comment