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.txtGet-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.
-FilePathSe utiliza para especificar la ubicación y el nombre del archivo.
-AppendSe utiliza para agregar resultados a un archivo existente.
-ForcePodemos sobrescribir un archivo de solo lectura usando este parámetro.
-WidthLimita el número de caracteres en cada línea (el límite predeterminado es
80caracteres).-WhatIfSe utiliza para ejecutarse en modo de prueba.
-NoClobberNo nos permite sobrescribir el archivo.
-NoNewLineNo 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.txtEn 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 (
Utilice >> Operadores de redirección:
Get-Process >> E:\Test\OuputFile.txtUsando la clase StreamWriter .Net
Para redirigir la salida de PowerShell a un archivo:
- Cree una instancia de la clase
System.IO.StreamWriterutilizando el cmdletNew-Object. - Utilice el cmdlet
Get-Processpara obtener información sobre todos los procesos en ejecución actualmente. - Envíe la información recuperada del paso anterior al cmdlet
ForEach-Objectmediante una canalización (|). - Ahora,
ForEach-Objectitera sobre cada objeto de proceso y escribe en el archivo especificado. - Por último, utilice el método
.Close()para cerrar el objetoStreamWriter.
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
StreamWriteres 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.txtEste 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 -NoNewlineEl 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.txtEn 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.
