Di adiós al aburrido y predecible resultado del script. Con el cmdlet Write-Output
de PowerShell, puedes añadir un toque de creatividad y personalidad a tus scripts de PowerShell.
El cmdlet Write-Output
es una herramienta poderosa y un compañero perfecto para todas tus necesidades de automatización y gestión de sistemas. Y en este tutorial, aprenderás a maximizar el potencial del cmdlet Write-Output
.
¿Listo? ¡Sigue leyendo y descubre la magia del cmdlet Write-Output
!
Prerrequisitos
Este tutorial será una demostración práctica. Para seguirlo, asegúrate de tener un ordenador con PowerShell instalado (preferiblemente la última versión). Este tutorial utiliza Windows 10 con PowerShell 7 instalado.
Mostrar Objetos en la Consola
El cmdlet Write-Output
de PowerShell escribe objetos en el flujo de salida y muestra el resultado de un comando o mensaje en la consola. Pero te sorprenderá cómo esta herramienta hace que la salida sea más significativa y valiosa.
En lugar de mostrar la salida en la consola, utiliza el cmdlet Write-Output
para personalizar la salida. El cmdlet Write-Output
puede mostrar cualquier objeto o tipo de dato, como cadenas, enteros, matrices e incluso objetos complejos.
Ejecuta el siguiente comando para mostrar un mensaje Hello, World! en la consola.
A continuación, puedes ver la función más básica del cmdlet Write-Output
. Pero sigue leyendo para aprender sobre usos intermedios y avanzados de este cmdlet.<>

Pasar Objetos a Otro Comando
Además de mostrar la salida en la consola, puedes usar el comando Write-Output
para enviar el objeto a otro comando para un procesamiento adicional. ¿Cómo? Usando el operador de canalización (|
). La Canalización hace que Write-Output
sea un comando útil y versátil para tareas de automatización y gestión del sistema.
Supongamos que deseas ver qué proceso consume la mayor parte de tus recursos, como la CPU.
Ejecuta los comandos a continuación para realizar lo siguiente:
- Obtener una lista de todos los procesos (
Get-Process
) en ejecución en tu sistema. - Salida la lista al pipeline, que luego se pasa al comando
Sort-Object
. El operador de pipeline te permite encadenar múltiples comandos y procesar la salida de un comando como la entrada para otro. - Ordena la lista de procesos (
Sort-Object
) por su uso deCPU
en orden-Descending
.
Ten en cuenta que puedes poner cualquiera de los comandos de este tutorial en un script de PowerShell y ejecutarlo.
La lista ordenada se muestra en la consola, como se muestra a continuación.

Mostrando Objetos con un Formato Personalizado
Has visto el formato básico de salida del cmdlet Write-Output, que funciona bien. Pero si quieres, también puedes mostrar objetos con un formato personalizado para añadir un toque personal. Un formato personalizado puede ser útil cuando deseas mostrar propiedades específicas del objeto o personalizar la apariencia de la salida.
Para mostrar un objeto con un formato personalizado, el Format-Custom
junto con el cmdlet Write-Output
hará el truco, de la siguiente manera:
para crear el formato de salida personalizado, y luego enviar la salida del cmdlet Format-Custom a Write-Output.<>
Ejecuta el siguiente comando, que no produce salida, pero crea un objeto (una hashtable) que contiene tres propiedades con los valores correspondientes para mostrar.
Ahora, ejecuta el siguiente comando para realizar lo siguiente:
- Crea un formato personalizado (
Format-Table
) para la salida (Write-Output
) de tu hashtable ($object
). Las propiedadesProperty1
,Property2
, yProperty3
se establecen como columnas. - Ajusta el ancho de las columnas (
-AutoSize
) para que se ajusten al contenido.

Alternativamente, puedes usar el cmdlet Format-List
con Write-Output
para mostrar el objeto como una lista de pares propiedad-valor.

Pasar un Objeto de Colección como una Entidad Única
De forma predeterminada, Write-Output
envía cada elemento de la colección a través del pipeline por separado, un proceso llamado enumeración. Pero puedes evitar este comportamiento añadiendo el parámetro -NoEnumerate
, pasando el objeto de la colección completa como una entidad única.
Para ver cómo funciona el parámetro -NoEnumerate
, sigue estos pasos:
Ejecuta los comandos a continuación para realizar lo siguiente:
- Declara un array de
$numbers
del uno al tres (1,2,3
).
- Cuenta el número de objetos (
Measure-Object
) que se pasan a través del pipeline. - Salida de la medición del objeto (
Write-Output $numbers
).
Sin el parámetro NoEnumerate
, Measure-Object
devuelve un recuento de tres (3), ya que cada elemento del array $numbers
fue enumerado y pasado individualmente a través del pipeline.

Ahora, ejecuta los siguientes comandos para mostrar el recuento de los objetos pasados a través del pipeline.
Pero como agregaste el parámetro -NoEnumerate
, el cmdlet Measure-Object
trata al objeto como una entidad única, devolviendo un recuento de uno (1).

Encerrar el comando
Write-Output
entre paréntesis (es decir,(Write-Output 1,2,3)
) forzará la enumeración a ocurrir independientemente del parámetro-NoEnumerate
.
Creación de un sistema de menú y solicitudes de entrada
Otro excelente uso del cmdlet Write-Output
es la creación de un sistema de menú con un script de PowerShell que solicita al usuario una entrada.
Crea un archivo .ps1 con tu editor de texto/código preferido, completa el código a continuación y guarda el archivo. Puedes nombrar el archivo como desees, pero la elección de este tutorial es myoutput.ps1.
El código a continuación utiliza un bucle para solicitar continuamente al usuario que seleccione una opción de una lista de opciones hasta que el usuario seleccione la opción Salir
.
Ahora, ejecuta el script (myoutput.ps1
) desde el directorio de trabajo.
Como se muestra a continuación, se muestra el mensaje asociado con tu selección cuando eliges las opciones 1, 2, o 3. Pero cuando seleccionas la opción 4, el script termina.

Mostrando una Pantalla de Bienvenida o Mensaje de Presentación
Además de enumerar las opciones que los usuarios pueden elegir, con Write-Output
, también puedes mostrar una pantalla de presentación o un mensaje de bienvenida. Las pantallas de presentación elegantes dan una buena impresión (profesional y pulida) a tu script.
Reemplaza el código en tu archivo myoutput.ps1 con el siguiente, que muestra una pantalla de presentación (un banner de un mensaje de bienvenida) cuando ejecutas tu script.
Puedes personalizar la pantalla de presentación modificando el texto y el formato del banner. Puedes agregar elementos adicionales, como un logotipo o texto, a la pantalla de presentación según lo desees.
Ahora, ejecuta el script y observa cómo se ve tu pantalla de presentación.

Mostrar una barra de progreso
Cuando ejecutas scripts, un indicador de progreso elimina la ansiedad del usuario sobre si el script se está ejecutando o no. Las barras de progreso pueden ser útiles para indicar el progreso de un script o operación que lleva mucho tiempo al usuario. Afortunadamente, con el cmdlet Write-Output
, puedes crear una barra de progreso a tu gusto.
Abre tu archivo myoutput.ps1 y agrega el siguiente código al final del existente en el archivo del script.
El código a continuación utiliza un bucle while
para iterar a través de varios pasos. En este ejemplo, 100 pasos. Cada iteración del bucle calcula el porcentaje de pasos completados y muestra una barra de progreso usando Write-Output
.
La barra de progreso se crea utilizando una combinación de los siguientes operadores:
*
– Repite una cadena un número especificado de veces$()
– Permite que la salida de una expresión se incluya en una cadena.
El script luego se pausa (Start-Sleep
) durante 1
segundo para simular el progreso antes de pasar al siguiente paso.
Ahora, ejecuta el script y observa cómo funciona la barra de progreso.
Abajo, puedes ver la pantalla de presentación junto con la barra de progreso.

Conclusión
En este tutorial, has visto cómo Write-Output
puede fácilmente producir objetos, tipos de datos, y formatos personalizados. Además, has explorado el uso del operador de canalización para enviar la salida a otros comandos para su procesamiento adicional.
Ya sea que estés escribiendo un simple mensaje de salida o tareas de automatización complejas, Write-Output
es una herramienta indispensable para crear scripts de PowerShell más informativos y profesionales.
Con este conocimiento recién adquirido, ¿por qué no escribir tus salidas en diferentes tipos de archivos, como archivos .txt y .xml? Independientemente de la intención, las copias de salida son útiles para solucionar problemas con tu sistema o aplicaciones. El Write-Output
y el cmdlet Out-File
te otorgan el poder que nunca supiste que necesitabas.
Source:
https://adamtheautomator.com/powershell-write-output/