Búsqueda de sitios web

PowerShell: redirigir salida a archivo [5 formas]


Usando el cmdlet Out-File

Utilice el cmdlet Out-File para redirigir la salida de PowerShell a un archivo.

Utilice el cmdlet Out-File:

Get-Process -Name chrome | Out-File -FilePath E:\Test\OuputFile.txt

Get-Process se utiliza para recuperar todos los procesos que se están ejecutando actualmente en nuestra máquina (computadora local). Podemos filtrar esta información especificando parámetros; por ejemplo, utilizamos el parámetro -Name para obtener todos los procesos chrome actualmente en ejecución. Sin parámetros, este cmdlet obtendrá todos los procesos que se ejecutan actualmente en la computadora local.

El cmdlet Out-File se utiliza para enviar la información recibida del proceso anterior a un archivo determinado. Este cmdlet utiliza implícitamente el sistema de formato de PowerShell para escribir en el archivo dado y obtiene la representación de visualización exacta como la consola de PowerShell.

Out-File escribió la información recibida en OutputFile.txt, que especificamos usando el nombre del parámetro -FilePath. Recuerde, el comando anterior creará el archivo .txt si no existe y lo sobrescribirá si existe. Por lo tanto, utilice el parámetro -Append si no desea perder el contenido existente o utilice -NoClobber para evitar sobrescribir el archivo.

Este cmdlet Out-File se recomienda si necesitamos usar parámetros para filtrar la información; de lo contrario, la opción de redirección (la aprenderemos más adelante) es mejor. Por ejemplo, podemos usar los siguientes parámetros con Out-File.

-FilePath

Se utiliza para especificar la ubicación y el nombre del archivo.

-Append

Se utiliza para agregar resultados a un archivo existente.

-Force

Podemos sobrescribir un archivo de solo lectura usando este parámetro.

-Width

Limita el número de caracteres en cada línea (el límite predeterminado es 80 caracteres).

-WhatIf

Se utiliza para ejecutarse en modo de prueba.

-NoClobber

No nos permite sobrescribir el archivo.

-NoNewLine

No permite escribir caracteres de nueva línea.

Usar operadores de redirección

Utilice los operadores de redirección > y >> para redirigir la salida de PowerShell a un archivo.

Usar > Operadores de redireccionamiento:

Get-Process -Name chrome >  E:\Test\OuputFile.txt

En la sección anterior, ya aprendimos sobre el cmdlet Get-Process y el parámetro -Name. Aquí, utilizamos el operador de redirección > para escribir la salida de PowerShell en el archivo. Creará el OutputFile.txt si no está presente en el directorio dado y lo sobrescribirá si está allí.

Usando el operador >, solo podremos escribir en el archivo dado si todo funciona bien porque está usado para la secuencia Success Only. Sin embargo, existen múltiples variaciones de operadores de redireccionamiento para escribir diferentes transmisiones. Así que veámoslos con una descripción y un cmdlet equivalente.

Redirection Operator Description Equivalent Cmdlet
> It is used to write a Success only stream. Write-Output
2> It is used to write an Error only stream. Write-Error
3> We can use it to write a Warning only stream. Write-Warning
4> It is used to write Verbose only steam. Write-Verbose
5> It is used to write Debug only steam. Write-Debug
6> It is used to write Information only steam. Write-Information
*> All

No se preocupe si busca un operador de redireccionamiento para agregar un archivo; lo tenemos cubierto. Podemos usar otro operador de redirección (>>) para agregar resultados en el archivo especificado.

Utilice >> Operadores de redirección:

Get-Process  >>  E:\Test\OuputFile.txt

Usando la clase StreamWriter .Net

Para redirigir la salida de PowerShell a un archivo:

  • Cree una instancia de la clase System.IO.StreamWriter utilizando el cmdlet New-Object.
  • Utilice el cmdlet Get-Process para obtener información sobre todos los procesos en ejecución actualmente.
  • Envíe la información recuperada del paso anterior al cmdlet ForEach-Object mediante una canalización (|).
  • Ahora, ForEach-Object itera sobre cada objeto de proceso y escribe en el archivo especificado.
  • Por último, utilice el método .Close() para cerrar el objeto StreamWriter.

Utilice la clase StreamWriter:

$streamWriter = New-Object System.IO.StreamWriter("E:\Test\Output.txt")
Get-Process | ForEach-Object {$streamWriter.WriteLine($_)}
$streamWriter.Close()

En este ejemplo, el cmdlet New-Object se usa para crear una nueva instancia de la clase System.IO.StreamWriter, que se usa para escribir texto (datos de tipo cadena) en una secuencia. A continuación, el objeto StreamWriter se inicializa con la ruta al archivo de salida como argumento.

El cmdlet Get-Process se utiliza para recuperar una lista de procesos, que se canaliza al cmdlet ForEach-Object. El cmdlet ForEach-Object itera a través de cada objeto de proceso y lo escribe en el archivo de salida utilizando el método WriteLine del objeto StreamWriter.

Finalmente, se llama al método Close del objeto StreamWriter para cerrar la secuencia y liberar los recursos asociados. Este código creará un archivo llamado Output.txt en el directorio E:\Test y escribirá la salida del comando Get-Process en el archivo.

Nota: La clase StreamWriter es parte de .NET Framework y se puede usar en PowerShell para escribir texto en un archivo u otra secuencia. Proporciona funciones más avanzadas que los operadores de redirección integrados, como la capacidad de especificar la codificación de la salida, agregarla a un archivo existente, controlar el tamaño del búfer y vaciar el búfer en la secuencia.

Usando el cmdlet Agregar contenido

Utilice el cmdlet Add-Content para redirigir la salida de PowerShell a un archivo.

Utilice el cmdlet Agregar contenido:

Get-Process -Name chrome | Add-Content E:\Test\FileOutput.txt

Este comando recuperó una lista de procesos usando el cmdlet Get-Process y agregó el resultado al final del archivo FileOutput.txt en E:\Test directorio . Si el archivo proporcionado no existe, se creará.

También puede usar el parámetro -Encoding para especificar la codificación del archivo de salida y el parámetro -NoNewline para evitar que el cmdlet agregue un carácter de nueva línea al final de una salida.

Utilice el cmdlet Agregar contenido:

Get-Process -Name chrome | Add-Content E:\Test\FileOutput.txt -Encoding UTF8 -NoNewline

El cmdlet Add-Content es útil cuando queremos escribir la salida del comando de PowerShell en un archivo, pero no necesitamos realizar operaciones avanzadas como buscar o leer del archivo. Además, resulta ventajoso cuando queremos adjuntar la salida a un archivo existente, ya que no sobrescribe su contenido.

Usando el cmdlet Set-Content

Utilice el cmdlet Set-Content para redirigir la salida de PowerShell a un archivo.

Utilice el cmdlet Establecer contenido:

Get-Process -Name chrome | Set-Content E:\Test\FileOutput.txt

En la sección anterior, ya aprendimos sobre el cmdlet Add-Content y el parámetro -Encoding. Este comando es similar a Add-Content, que recupera una lista de procesos utilizando el cmdlet Get-Process y escribe la salida en FileOutput.txt ubicado en el directorio E:\Test.

Pero sobrescribirá el contenido si el archivo ya existe. De nuevo, al igual que el cmdlet Add-Content, también podemos usar el parámetro -Encoding. El cmdlet Set-Content es beneficioso cuando queremos reemplazar el contenido de un archivo existente, ya que sobrescribe el contenido del archivo.

Artículos relacionados