Pide tu presupuesto ya!

Usar la canalización de PowerShell como un profesional

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.

Demostrando el oleoducto

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
Comprobando un servicio específico

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
Verificar el estado de varios servicios enumerados en un archivo de texto

Comprobación del soporte de canalización

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
Comprobando si el comando Stop-Service admite la entrada de tubería

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.

Verificar que el comando Stop-Service admita la entrada de tubería

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

Intentar una entrada de tubería sin soporte

Mientras Get-Service funciona como se esperaba:

Ejecutar un comando que admita entrada de tubería

Conclusión

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!

Written by

Leave a comment