Out-File

Envia a saída para um arquivo.

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

O Out-File cmdlet envia a saída para um arquivo. Ele usa implicitamente o sistema de formatação do PowerShell para gravar no arquivo. O arquivo recebe a mesma representação de exibição que o terminal. Isso significa que a saída pode não ser ideal para processamento programático, a menos que todos os objetos de entrada sejam cadeias de caracteres. Quando precisar especificar parâmetros para a saída, use Out-File em vez do operador de redirecionamento (>). Para obter mais informações sobre o redirecionamento, consulte about_Redirection.

Exemplos

Exemplo 1: Enviar saída e criar um arquivo

Este exemplo mostra como enviar uma lista dos processos do computador local para um arquivo. Se o arquivo não existir, Out-File criará o arquivo no caminho especificado.

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

O Get-Process cmdlet obtém a lista de processos em execução no computador local. Os objetos Process são enviados pelo pipeline para o Out-File cmdlet. Out-File usa o parâmetro FilePath e cria um arquivo no diretório atual chamado Process.txt. O Get-Content comando obtém o conteúdo do arquivo e o exibe no console do PowerShell.

Exemplo 2: impedir que um arquivo existente seja substituído

Este exemplo impede que um arquivo existente seja substituído. Por padrão, Out-File substitui arquivos 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
+               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

O Get-Process cmdlet obtém a lista de processos em execução no computador local. Os objetos Process são enviados pelo pipeline para o Out-File cmdlet. Out-File usa o parâmetro FilePath e tenta gravar em um arquivo no diretório atual chamado Process.txt. O parâmetro NoClobber impede que o arquivo seja substituído e exibe uma mensagem de que o arquivo já existe.

Exemplo 3: Enviar saída para um arquivo no formato ASCII

Este exemplo mostra como codificar a saída com um tipo de codificação específico.

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

O Get-Process cmdlet obtém a lista de processos em execução no computador local. Os objetos Process são armazenados na variável. $Procs Out-File usa o parâmetro FilePath e cria um arquivo no diretório atual chamado Process.txt. O parâmetro InputObject passa os objetos $Procs de processo para o arquivoProcess.txt. O parâmetro de codificação converte a saída em formato ASCII . O parâmetro Width limita cada linha no arquivo a 50 caracteres para que alguns dados possam ser truncados.

Exemplo 4: usar um provedor e enviar saída para um arquivo

Este exemplo mostra como usar o Out-File cmdlet quando você não está em uma unidade do provedor FileSystem . Use o Get-PSProvider cmdlet para exibir os provedores em seu computador local. Para obter mais informações, 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

O Set-Location comando usa o parâmetro Path para definir o local atual para o provedor Alias:do Registro. O Get-Location cmdlet exibe o caminho completo para Alias:. Get-ChildItem envia objetos pelo pipeline para o Out-File cmdlet. Out-File usa o parâmetro FilePath para especificar o caminho completo e o nome do arquivo para a saída, C:\TestDir\AliasNames.txt. O Get-Content cmdlet usa o parâmetro Path e exibe o conteúdo do arquivo no console do PowerShell.

Exemplo 5: Definir largura de saída do arquivo para todo o escopo

Este exemplo usa $PSDefaultParameterValues para definir o Width parâmetro para todas as invocações e Out-File o redirecionamento operartors (> e >>) como 2000. Essa é uma maneira fácil de garantir que, em todos os lugares em um escopo em que você gera dados formatados de tabela para arquivo, o PowerShell usará uma largura de linha de 2000 em vez de uma largura de linha determinada pela largura do console do host do 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 obter mais informações sobre $PSDefaultParameterValues, consulte about_Preference_Variables.

Parâmetros

-Append

Adiciona a saída ao final de um arquivo existente.

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

-Confirm

Solicita sua confirmação antes de executar o cmdlet.

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

-Encoding

Especifica o tipo de codificação para o arquivo de destino. O valor padrão é utf8NoBOM.

Os valores aceitáveis para este parâmetro são os seguintes:

  • ascii: usa a codificação para o conjunto de caracteres ASCII (7 bits).
  • bigendianunicode: codifica no formato UTF-16 usando a ordem de byte big-endian.
  • bigendianutf32: codifica no formato UTF-32 usando a ordem de byte big-endian.
  • oem: usa a codificação padrão para programas MS-DOS e console.
  • unicode: codifica no formato UTF-16 usando a ordem de byte little-endian.
  • utf7: codifica no formato UTF-7.
  • utf8: codifica no formato UTF-8.
  • utf8BOM: codifica no formato UTF-8 com Marca de Ordem de Byte (BOM)
  • utf8NoBOM: codifica no formato UTF-8 sem Marca de Ordem de Byte (BOM)
  • utf32: codifica no formato UTF-32.

A partir do PowerShell 6.2, o parâmetro de codificação também permite IDs numéricas de páginas de código registradas (como -Encoding 1251) ou nomes de cadeia de caracteres de páginas de código registradas (como -Encoding "windows-1251"). Para obter mais informações, consulte a documentação do .NET para Encoding.CodePage.

Observação

UTF-7* não é mais recomendável usar. A partir do PowerShell 7.1, um aviso será escrito se você especificar utf7 o parâmetro de codificação .

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 o caminho para o arquivo de saída.

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

-Force

Substitui o atributo somente leitura e substitui um arquivo somente leitura existente. O parâmetro Force não substitui as restrições de segurança.

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

-InputObject

Especifica os objetos a serem gravados no arquivo. Insira uma variável que contém os objetos ou digite um comando ou uma expressão que obtém os objetos.

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

-LiteralPath

Especifica o caminho para o arquivo de saída. O parâmetro LiteralPath é usado exatamente como é digitado. Caracteres curinga não são aceitos. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. Aspas simples dizem ao PowerShell para não interpretar nenhum caractere como sequências de escape. Para obter mais informações, 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

O NoClobber impede que um arquivo existente seja substituído e exibe uma mensagem de que o arquivo já existe. Por padrão, se existir um arquivo no caminho especificado, Out-File substituirá o arquivo sem aviso.

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

-NoNewline

Especifica que o conteúdo gravado no arquivo não termina com um caractere newline. As representações de cadeia de caracteres dos objetos de entrada são concatenadas para formar a saída. Nenhum espaço ou linhas novas são inseridos entre as cadeias de caracteres de saída. Nenhuma nova linha é adicionada após a última cadeia de caracteres de saída.

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

-WhatIf

Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

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

-Width

Especifica o número de caracteres em cada linha de saída. Quaisquer eventuais caracteres adicionais ficam truncados, não encapsulados. Se esse parâmetro não for usado, a largura será determinada pelas características do host. O padrão para o console do PowerShell é 80 caracteres. Se você quiser controlar a largura de todas as invocações, bem como os operadores de Out-File redirecionamento (> e >>), definidos $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

Você pode canalizar qualquer objeto para Out-File.

Saídas

None

Out-File não gera nenhuma saída.

Observações

Os objetos de entrada são formatados automaticamente como seriam no terminal, mas você pode usar um Format-* cmdlet para controlar explicitamente a formatação da saída para o arquivo. Por exemplo, Get-Date | Format-List | Out-File out.txt

Para enviar a saída de um comando do PowerShell para o Out-File cmdlet, use o pipeline. Como alternativa, você pode armazenar dados em uma variável e usar o parâmetro InputObject para passar dados para o Out-File cmdlet.

Out-File salva dados em um arquivo, mas ele não produz nenhum objeto de saída para o pipeline.