Write-Output
Escribe los objetos especificados en la canalización.
Sintaxis
Write-Output
[-InputObject] <PSObject[]>
[-NoEnumerate]
[<CommonParameters>]
Description
Escribe los objetos especificados en la canalización. Si Write-Output
es el último comando de la canalización, los objetos se muestran en la consola.
Write-Output
envía objetos a la canalización principal, también conocida como secuencia de éxito. Para enviar objetos de error al flujo de errores, use Write-Error
.
Este cmdlet se usa normalmente en scripts para mostrar cadenas y otros objetos en la consola. Uno de los alias integrados para Write-Output
es echo
y similar a otros shells que usan echo
. El comportamiento predeterminado es mostrar la salida al final de una canalización. En PowerShell, generalmente no es necesario usar el cmdlet en instancias en las que se muestra la salida de forma predeterminada. Por ejemplo, Get-Process | Write-Output
es equivalente a Get-Process
. O bien, echo "Home directory: $HOME"
se puede escribir, "Home directory: $HOME"
.
De forma predeterminada, Write-Output
enumera los objetos de una colección. Sin embargo, Write-Output
también puede pasar colecciones a la canalización como un solo objeto con el parámetro NoEnumerate .
Ejemplos
Ejemplo 1: Obtener objetos y escribirlos en la consola
En este ejemplo, los resultados del Get-Process
cmdlet se almacenan en la $P
variable . El Write-Output
cmdlet muestra los objetos de proceso en $P
la consola.
$P = Get-Process
Write-Output $P
Ejemplo 2: Pasar la salida a otro cmdlet
Este comando canaliza la cadena "test output" al Get-Member
cmdlet , que muestra los miembros de la clase System.String , lo que demuestra que la cadena se pasó a lo largo de la canalización.
Write-Output "test output" | Get-Member
Ejemplo 3: Suprimir la enumeración en la salida
Este comando agrega el parámetro NoEnumerate para tratar una colección o matriz como un único objeto a través de la canalización.
Write-Output 1,2,3 | Measure-Object
Count : 3
...
Write-Output 1,2,3 -NoEnumerate | Measure-Object
Count : 1
...
Parámetros
-InputObject
Especifica los objetos que se van a enviar a través de la canalización. Especifique una variable que contenga los objetos o escriba un comando o una expresión que obtenga los objetos.
Tipo: | PSObject[] |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-NoEnumerate
De forma predeterminada, el Write-Output
cmdlet siempre enumera su salida. El parámetro NoEnumerate suprime el comportamiento predeterminado e impide Write-Output
enumerar la salida. El parámetro NoEnumerate no tiene ningún efecto si el comando se ajusta entre paréntesis, porque los paréntesis fuerzan la enumeración. Por ejemplo, (Write-Output 1,2,3)
sigue enumerando la matriz.
El parámetro NoEnumerate solo es útil dentro de una canalización. Intentar ver los efectos de NoEnumerate en la consola es problemático porque PowerShell agrega Out-Default
al final de cada línea de comandos, lo que da como resultado la enumeración. Pero si canaliza Write-Output -NoEnumerate
a otro cmdlet, el cmdlet de bajada recibe el objeto de colección, no los elementos enumerados de la colección.
Importante
Hay un problema con este modificador en Windows PowerShell que se ha corregido en PowerShell 6.2 y versiones posteriores. Cuando se usa NoEnumerate y se usa explícitamente el parámetro InputObject , el comando sigue enumerando. Para solucionarlo, pase los argumentos InputObject de forma posicional.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
Puede canalizar objetos a este cmdlet.
Salidas
Este cmdlet devuelve los objetos que se envían como entrada.
Notas
Windows PowerShell incluye los siguientes alias para Write-Output
:
echo
write