Compartir a través de


Acerca del redireccionamiento

Descripción breve

Explica cómo redirigir la salida de PowerShell a archivos de texto.

Descripción larga

De forma predeterminada, PowerShell envía su salida de comando a la consola de PowerShell. Sin embargo, puede dirigir la salida a un archivo de texto y puede redirigir la salida de error al flujo de salida normal.

Puede usar los métodos siguientes para redirigir la salida:

  • Use el cmdlet , que envía la Out-File salida del comando a un archivo de texto. Normalmente, se usa el Out-File cmdlet cuando es necesario usar sus parámetros, como los Encodingparámetros , Force, Widtho NoClobber .

  • Use el Tee-Object cmdlet , que envía la salida del comando a un archivo de texto y, a continuación, lo envía a la canalización.

  • Use los operadores de redireccionamiento de PowerShell.

Operadores de redireccionamiento de PowerShell

Los operadores de redireccionamiento permiten enviar flujos de datos a un archivo o al flujo de salida Correcto .

Los operadores de redireccionamiento de PowerShell usan los siguientes números para representar los flujos de salida disponibles:

Stream # Descripción Introducida en
1 Correcto Stream PowerShell 2.0
2 Error Stream PowerShell 2.0
3 Stream de advertencia PowerShell 3.0
4 Stream detallado PowerShell 3.0
5 Depurar Stream PowerShell 3.0
6 Información Stream PowerShell 5.0
* Todas las secuencias PowerShell 3.0

Nota

También hay un flujo de progreso en PowerShell, pero no se usa para el redireccionamiento.

Los operadores de redirección de PowerShell son los siguientes, donde n representa el número de secuencia. El flujo correcto ( 1 ) es el valor predeterminado si no se especifica ninguna secuencia.

Operador Descripción Sintaxis
> Envíe una secuencia especificada a un archivo. n>
>> Anexe la secuencia especificada a un archivo. n>>
>&1 Redirige la secuencia especificada a la secuencia Success . n>&1

Ejemplos

Ejemplo 1: Redireccionamiento de errores y salida a un archivo

dir 'C:\', 'fakepath' 2>&1 > .\dir.log

Este ejemplo se ejecuta dir en un elemento que se realizará correctamente y otro que producirá un error.

Usa 2>&1 para redirigir el flujo de error a la secuencia Success y > para enviar el flujo correcto resultante a un archivo denominado dir.log

Ejemplo 2: Enviar todos los datos de flujo correctos a un archivo

.\script.ps1 > script.log

Este comando envía todos los datos del flujo correcto a un archivo denominado script.log

Ejemplo 3: Envío de flujos correctos, advertencias y errores a un archivo

&{
   Write-Warning "hello"
   Write-Error "hello"
   Write-Output "hi"
} 3>&1 2>&1 > P:\Temp\redirection.log

En este ejemplo se muestra cómo puede combinar operadores de redirección para lograr un resultado deseado.

  • 3>&1 redirige el flujo de advertencia a la secuencia Correcto .
  • 2>&1 redirige el flujo de error al flujo correcto (que ahora también incluye todos los datos del flujo de advertencia ).
  • > redirige la secuencia Success (que ahora contiene flujos de advertencia y error ) a un archivo denominado C:\temp\redirection.log)

Ejemplo 4: Redirigir todas las secuencias a un archivo

.\script.ps1 *> script.log

En este ejemplo se envían todos los flujos de salida de un script llamado script.ps1 a un archivo denominado script.log

Ejemplo 5: Suprimir todos los datos de flujo de información y Write-Host

&{
   Write-Host "Hello"
   Write-Information "Hello" -InformationAction Continue
} 6> $null

En este ejemplo se suprimen todos los datos de flujo de información. Para obtener más información sobre los cmdlets de flujo de información, consulte Write-Host y Write-Information.

Notas

Los operadores de redireccionamiento que no anexan datos (> y n>) sobrescriben el contenido actual del archivo especificado sin advertencia.

Sin embargo, si el archivo es un archivo de solo lectura, oculto o del sistema, se produce un error en el redireccionamiento. Los operadores de redirección de anexión (>> y n>>) no escriben en un archivo de solo lectura, sino que anexan contenido a un sistema o archivo oculto.

Para forzar la redirección del contenido a un archivo de sistema, oculto o de solo lectura, use el Out-File cmdlet con su Force parámetro .

Al escribir en archivos, los operadores de redireccionamiento usan la codificación Unicode. Si el archivo tiene una codificación diferente, es posible que la salida no tenga el formato correcto. Para redirigir el contenido a archivos que no son Unicode, use el Out-File cmdlet con su Encoding parámetro .

Posible confusión con operadores de comparación

El > operador no se debe confundir con el operador de comparación Mayor que (a menudo se indica como > en otros lenguajes de programación).

Dependiendo de los objetos que se comparan, la salida que usa > puede parecer correcta (porque 36 no es mayor que 42).

PS> if (36 > 42) { "true" } else { "false" }
false

Sin embargo, una comprobación del sistema de archivos local puede ver que se escribió un archivo denominado 42 , con el contenido 36.

PS> dir

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
------          1/02/20  10:10 am              3 42

PS> cat 42
36

Si se intenta usar la comparación < inversa (menor que), se produce un error del sistema:

PS> if (36 < 42) { "true" } else { "false" }
At line:1 char:8
+ if (36 < 42) { "true" } else { "false" }
+        ~
The '<' operator is reserved for future use.
+ CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : RedirectionNotSupported

Si la comparación numérica es la operación -lt necesaria y -gt se debe usar. Vea: -gt Operador de comparación

Consulte también

Out-File

Tee-Object

about_Operators

about_Command_Syntax

about_Path_Syntax