Out-File

Envía los resultados a un archivo.

Syntax

Out-File
   [-FilePath] <string>
   [[-Encoding] <Encoding>]
   [-Append]
   [-Force]
   [-NoClobber]
   [-Width <int>]
   [-NoNewline]
   [-InputObject <psobject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Out-File
   [[-Encoding] <Encoding>]
   -LiteralPath <string>
   [-Append]
   [-Force]
   [-NoClobber]
   [-Width <int>]
   [-NoNewline]
   [-InputObject <psobject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

El Out-File cmdlet envía la salida a un archivo. Usa implícitamente el sistema de formato de PowerShell para escribir en el archivo. El archivo recibe la misma representación de presentación que el terminal. Esto significa que la salida puede no ser ideal para el procesamiento mediante programación a menos que todos los objetos de entrada sean cadenas.

Redirigir la salida de un comando de PowerShell (cmdlet, función, script) mediante el operador de redirección (>) es funcionalmente equivalente a canalizar a Out-File sin parámetros adicionales. PowerShell 7.4 cambió el comportamiento del operador de redirección cuando se usa para redirigir la secuencia stdout de un comando nativo. Para obtener más información sobre el redireccionamiento, consulte about_Redirection.

Ejemplos

Ejemplo 1: Enviar salida y crear un archivo

En este ejemplo se muestra cómo enviar una lista de los procesos del equipo local a un archivo. Si el archivo no existe, Out-File crea el archivo en la ruta de acceso especificada.

Get-Process | Out-File -FilePath .\Process.txt
Get-Content -Path .\Process.txt

NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
     29    22.39      35.40      10.98   42764   9 Application
     53    99.04     113.96       0.00   32664   0 CcmExec
     27    96.62     112.43     113.00   17720   9 Code

El Get-Process cmdlet obtiene la lista de procesos que se ejecutan en el equipo local. Los objetos Process se envían a la canalización al Out-File cmdlet . Out-File usa el parámetro FilePath y crea un archivo en el directorio actual denominado Process.txt. El Get-Content comando obtiene contenido del archivo y lo muestra en la consola de PowerShell.

Ejemplo 2: Impedir que se sobrescriba un archivo existente

En este ejemplo se impide que se sobrescriba un archivo existente. De forma predeterminada, Out-File sobrescribe los archivos existentes.

Get-Process | Out-File -FilePath .\Process.txt -NoClobber

Out-File : The file 'C:\Test\Process.txt' already exists.
At line:1 char:15
+ Get-Process | Out-File -FilePath .\Process.txt -NoClobber
+               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

El Get-Process cmdlet obtiene la lista de procesos que se ejecutan en el equipo local. Los objetos Process se envían a la canalización al Out-File cmdlet . Out-File usa el parámetro FilePath e intenta escribir en un archivo del directorio actual denominado Process.txt. El parámetro NoClobber impide que el archivo se sobrescriba y muestre un mensaje que indica que el archivo ya existe.

Ejemplo 3: Envío de salida a un archivo en formato ASCII

En este ejemplo se muestra cómo codificar la salida con un tipo de codificación específico.

$Procs = Get-Process
Out-File -FilePath .\Process.txt -InputObject $Procs -Encoding ASCII -Width 50

El Get-Process cmdlet obtiene la lista de procesos que se ejecutan en el equipo local. Los objetos Process se almacenan en la variable , $Procs. Out-File usa el parámetro FilePath y crea un archivo en el directorio actual denominado Process.txt. El parámetro InputObject pasa los objetos de proceso en $Procs al archivo Process.txt. El parámetro Encoding convierte la salida en formato ASCII . El parámetro Width limita cada línea del archivo a 50 caracteres para que algunos datos se puedan truncar.

Ejemplo 4: Uso de un proveedor y envío de salida a un archivo

En este ejemplo se muestra cómo usar el Out-File cmdlet cuando no se encuentra en una unidad de proveedor de FileSystem . Use el Get-PSProvider cmdlet para ver los proveedores en el equipo local. Para obtener más información, consulte about_Providers.

PS> Set-Location -Path Alias:

PS> Get-Location

Path
----
Alias:\

PS> Get-ChildItem | Out-File -FilePath C:\TestDir\AliasNames.txt

PS> Get-Content -Path C:\TestDir\AliasNames.txt

CommandType     Name
-----------     ----
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
Alias           ac -> Add-Content
Alias           cat -> Get-Content

El Set-Location comando usa el parámetro Path para establecer la ubicación actual en el proveedor Alias:del Registro . El Get-Location cmdlet muestra la ruta de acceso completa para Alias:. Get-ChildItem envía objetos a la Out-File canalización al cmdlet . Out-File usa el parámetro FilePath para especificar la ruta de acceso completa y el nombre de archivo de la salida, C:\TestDir\AliasNames.txt. El Get-Content cmdlet usa el parámetro Path y muestra el contenido del archivo en la consola de PowerShell.

Ejemplo 5: Establecer el ancho de salida del archivo para todo el ámbito

En este ejemplo se usa $PSDefaultParameterValues para establecer el Width parámetro para todas las invocaciones de y los operandos de Out-File redirección (> y >>) en 2000. Esto garantiza que en todas partes del ámbito actual se generan datos con formato de tabla en el archivo, PowerShell usa un ancho de línea de 2000 en lugar de un ancho de línea determinado por el ancho de consola del host de PowerShell.

function DemoDefaultOutFileWidth() {
    try {
        $PSDefaultParameterValues['out-file:width'] = 2000

        $logFile = "$pwd\logfile.txt"

        Get-ChildItem Env:\ > $logFile

        Get-Service -ErrorAction Ignore |
            Format-Table -AutoSize |
            Out-File $logFile -Append

        Get-Process | Format-Table Id,SI,Name,Path,MainWindowTitle >> $logFile
    }
    finally {
        $PSDefaultParameterValues.Remove('out-file:width')
    }
}

DemoDefaultOutFileWidth

Para obtener más información sobre $PSDefaultParameterValues, consulte about_Preference_Variables.

Parámetros

-Append

Agrega la salida al final de un archivo existente.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Le solicita su confirmación antes de ejecutar el cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

Especifica el tipo de codificación del archivo de destino. El valor predeterminado es utf8NoBOM.

Los valores aceptables para este parámetro son los siguientes:

  • ascii: usa la codificación para el juego de caracteres ASCII (7 bits).
  • ansi: usa la codificación para la página de códigos ANSI de la referencia cultural actual. Esta opción se agregó en PowerShell 7.4.
  • bigendianunicode: codifica en formato UTF-16 mediante el orden de bytes big-endian.
  • bigendianutf32: codifica en formato UTF-32 mediante el orden de bytes big-endian.
  • oem: usa la codificación predeterminada para los programas de consola y MS-DOS.
  • unicode: codifica en formato UTF-16 mediante el orden de bytes little-endian.
  • utf7: codifica en formato UTF-7.
  • utf8: codifica en formato UTF-8.
  • utf8BOM: codifica en formato UTF-8 con marca de orden de bytes (BOM)
  • utf8NoBOM: codifica en formato UTF-8 sin marca de orden de bytes (BOM)
  • utf32: codifica en formato UTF-32.

A partir de PowerShell 6.2, el parámetro Encoding también permite identificadores numéricos de páginas de códigos registradas (como -Encoding 1251) o nombres de cadena de páginas de códigos registradas (como -Encoding "windows-1251"). Para obtener más información, consulte la documentación de .NET para Encoding.CodePage.

A partir de PowerShell 7.4, puede usar el Ansi valor del parámetro Encoding para pasar el identificador numérico de la página de códigos ANSI de la referencia cultural actual sin tener que especificarlo manualmente.

Nota:

Ya no se recomienda usar UTF-7*. A partir de PowerShell 7.1, se escribe una advertencia si especifica utf7 para el parámetro Encoding .

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:1
Default value:UTF8NoBOM
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

Especifica la ruta de acceso al archivo de salida.

Type:String
Aliases:Path
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Force

Invalida el atributo de solo lectura y sobrescribe un archivo de solo lectura existente. El parámetro Force no invalida las restricciones de seguridad.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Especifica los objetos que se escribirán en el archivo. Especifique una variable que contenga los objetos, o escriba un comando o una expresión que obtenga los objetos.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

Especifica la ruta de acceso al archivo de salida. El parámetro LiteralPath se usa exactamente como se escribe. No se aceptan caracteres comodín. Si la ruta de acceso contiene caracteres de escape, escríbalos entre comillas simples. Las comillas simples indican a PowerShell que no interprete ningún carácter como secuencias de escape. Para obtener más información, consulte about_Quoting_Rules.

Type:String
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-NoClobber

NoClobber impide que se sobrescriba un archivo existente y muestre un mensaje que indica que el archivo ya existe. De forma predeterminada, si existe un archivo en la ruta de acceso especificada, Out-File sobrescribe el archivo sin advertencia.

Type:SwitchParameter
Aliases:NoOverwrite
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NoNewline

Especifica que el contenido escrito en el archivo no termina con un carácter de nueva línea. Las representaciones de cadena de los objetos de entrada se concatenan para formar la salida. No se insertan espacios ni nuevas líneas entre las cadenas de salida. No se agrega ninguna nueva línea después de la última cadena de salida.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Width

Especifica el número máximo de caracteres en cada línea de salida. Los caracteres extra se truncan, no se ajustan. Si no se usa este parámetro, el ancho viene determinado por las características del host. El valor predeterminado de la consola de PowerShell es de 80 caracteres. Si desea controlar el ancho de todas las invocaciones de , así como los operadores de Out-File redireccionamiento (> y >>), establecido $PSDefaultParameterValues['out-file:width'] = 2000 antes de usar Out-File.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entradas

PSObject

Puede canalizar cualquier objeto a este cmdlet.

Salidas

None

Este cmdlet no devuelve ningún resultado.

Notas

Los objetos de entrada tienen el formato automático como lo harían en el terminal, pero puede usar un Format-* cmdlet para controlar explícitamente el formato de la salida en el archivo. Por ejemplo: Get-Date | Format-List | Out-File out.txt

Para enviar la salida de un comando de PowerShell al Out-File cmdlet , use la canalización. Como alternativa, puede almacenar datos en una variable y usar el parámetro InputObject para pasar datos al Out-File cmdlet .

Out-File guarda los datos en un archivo, pero no genera ningún objeto de salida en la canalización.

PowerShell 7.2 agregó la capacidad de controlar cómo se representan las secuencias de escape ANSI. La salida decorada con ANSI que se pasa a Out-File se puede cambiar en función del valor de la $PSStyle.OutputRendering propiedad . Para obtener más información, consulte about_ANSI_Terminals.