Looking for powershell Answers? Try Ask4KnowledgeBase
Looking for powershell Keywords? Try Ask4Keywords

PowerShellTrabajando con la tubería de PowerShell


Introducción

PowerShell presenta un modelo de canalización de objetos, que le permite enviar objetos enteros a través de la tubería para consumir comandos o (al menos) la salida. A diferencia de la canalización clásica basada en cadenas, la información de los objetos canalizados no tiene que estar en posiciones específicas. Los Commandlets pueden declarar que interactúan con los objetos de la canalización como entrada, mientras que los valores de retorno se envían automáticamente a la canalización.

Sintaxis

  • COMENZAR El primer bloque. Ejecutado una vez al principio. La entrada de canalización aquí es $ null, ya que no se ha establecido.
  • PROCESO El segundo bloque. Ejecutado para cada elemento de la tubería. El parámetro pipeline es igual al elemento procesado actualmente.
  • FIN del último bloque. Ejecutado una vez al final. El parámetro de canalización es igual al último elemento de la entrada, porque no se ha cambiado desde que se estableció.

Observaciones

En la mayoría de los casos, la entrada de la tubería será una matriz de objetos. Aunque el comportamiento del bloque PROCESS{} puede parecer similar al bloque foreach{} , omitir un elemento de la matriz requiere un proceso diferente.

Si, como en foreach{} , usó continue dentro del bloque PROCESS{} , se rompería la tubería, omitiendo todas las siguientes declaraciones, incluido el bloque END{} . En su lugar, use return : solo finalizará el bloque PROCESS{} para el elemento actual y se moverá al siguiente.

En algunos casos, es necesario generar el resultado de funciones con codificación diferente. La codificación de la salida de los CmdLets está controlada por la variable $OutputEncoding . Cuando se pretende que la salida se coloque en una tubería hacia aplicaciones nativas, podría ser una buena idea corregir la codificación para que coincida con el destino $OutputEncoding = [Console]::OutputEncoding

Referencias adicionales:

Artículo del blog con más información sobre $OutputEncoding https://blogs.msdn.microsoft.com/powershell/2006/12/11/outputencoding-to-the-rescue/

Trabajando con la tubería de PowerShell Ejemplos relacionados