Redirigir la salida de PowerShell a un archivo con Out-File: Una guía completa

Si estás en busca de un cmdlet de PowerShell que pueda almacenar la salida en un archivo de texto, estás de suerte. Estás a punto de aprender cómo utilizar el cmdlet Out-File de PowerShell junto con su popular parámetro Out-File -Append también!

¿Cómo Funciona Out-File?

Este cmdlet de PowerShell es simple en su naturaleza; su único propósito es almacenar la salida recibida y guardarla en un archivo de texto.

Fue diseñado para reemplazar al operador de redirección de salida estándar (>). Incluso desde los días de DOS, podíamos redirigir la salida a un archivo. Este cmdlet es la forma de hacerlo en PowerShell.

El cmdlet Out-File se utiliza típicamente al final de la canalización de PowerShell. Su único propósito es enviar la salida directamente a un archivo de texto sin preocuparse por su formato. Hay formas mínimas de ajustar cómo se escribe esa salida.

Enviando la Salida a un Archivo

Imagina que tienes un script que devuelve una lista de todos los servicios de Windows en tu computadora. Cuando ejecutas Get-Service, recibirás todos los objetos que esperas en la consola.

Pero tal vez te gustaría guardar esa salida en un archivo de texto. El cmdlet Out-File es una excelente manera de hacerlo. Puedes utilizarlo al dirigir prácticamente cualquier cosa hacia él a través de la canalización.

Puedes ver a continuación que la salida de Get-Service se envió al cmdlet que creó un archivo de texto llamado Services.txt que contiene la misma información que ves en la consola.

PS> Get-Service | Out-File -FilePath C:\Services.txt
PS> Get-Content C:\Services.txt
Status   Name               DisplayName

Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
Stopped  AppIDSvc           Application Identity
Stopped  Appinfo            Application Information
Stopped  AppMgmt            Application Management
<SNIP>

Agregar a un archivo

Por defecto, sobrescribe cualquier cosa en el archivo de texto proporcionado a través del parámetro FilePath. Sin embargo, puedes anular este comportamiento utilizando el parámetro Append.

Tal vez estés acumulando la salida de la consola en un archivo y quisieras agregar texto a un archivo en lugar de sobrescribirlo. El parámetro Append es tu mejor aliado.

Al usar el parámetro Out-File -Append puedes ver a continuación, nota que si no lo usas, se sobrescribe el archivo C:\File.txt. Pero, en cuanto agregas el parámetro Append, añade la salida al final del archivo.

PS> 'foo' | Out-File -FilePath C:\File.txt
PS> Get-Content -Path C:\File.txt
foo
PS> 'foo' | Out-File -FilePath C:\File.txt
PS> Get-Content C:\File.txt
foo
PS> 'foo' | Out-File -FilePath C:\File.txt -Append
PS> Get-Content C:\File.txt
foo foo

Cambiando la salida

Por defecto, este cmdlet intentará replicar lo que se muestra en la consola, pero hay algunas formas de manipularlo. Por ejemplo, el cmdlet tiene un parámetro NoNewLine que simplemente elimina todos los caracteres de nueva línea.

PS> Get-Service | Out-File -FilePath C:\Services.txt -NoNewline
PS> Get-Content C:\Services.txt
Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application La

O puedes cortar el texto en cada fila en un recuento de caracteres particular también con el parámetro Width.

PS> Get-Service | Out-File -FilePath C:\Services.txt -Width 30 
PS> Get-Content C:\Services.txt
Status   Name               DisplayName
------   -----              -----------
Stopped  AJRouter           Al

Conclusión

Out-File

En un escenario real, este cmdlet funciona, pero hay mejores formas de almacenar la salida en un archivo.

Este cmdlet no proporciona opciones reales para manipular la salida. Simplemente guarda la salida exactamente como se muestra en la consola. Este cmdlet es similar a un transcripción de PowerShell que simplemente escribe todo directamente en un archivo de texto.

El cmdlet Add-Content o Set-Content siempre tendrán más flexibilidad, pero si necesitas una forma rápida de llevar la salida de PowerShell a un archivo, Out-File es la opción a elegir.

Relacionado: Set-Content: La forma de PowerShell de Escribir en un Archivo

Source:
https://adamtheautomator.com/out-file/