Compartilhar via


Out-File

Envia a saída para um arquivo.

Sintaxe

ByPath (Default)

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

ByLiteralPath

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

Description

O cmdlet Out-File 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 você 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 cmdlet Get-Process obtém a lista de processos em execução no computador local. Os objetos processo de são enviados pelo pipeline para o cmdlet Out-File. Out-File usa o parâmetro FilePath e cria um arquivo no diretório atual chamado Process.txt. O comando Get-Content obtém 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 cmdlet Get-Process obtém a lista de processos em execução no computador local. Os objetos processo de são enviados pelo pipeline para o cmdlet Out-File. 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 cmdlet Get-Process obtém a lista de processos em execução no computador local. Os objetos processo de 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 de processo em $Procs para o arquivo Process.txt. O parâmetro de Codificação converte a saída em formato ASCII. O parâmetro Width limita cada linha do 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 cmdlet Out-File quando você não estiver em uma unidade de provedor FileSystem. Use o cmdlet Get-PSProvider 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 comando Set-Location usa o parâmetro Path para definir o local atual para o provedor de registro Alias:. O cmdlet Get-Location exibe o caminho completo para Alias:. Get-ChildItem envia objetos pelo pipeline para o cmdlet Out-File. 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 cmdlet Get-Content usa o parâmetro Path e exibe o conteúdo do arquivo no console do PowerShell.

Exemplo 5: Definir a 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 de e os operadores de Out-File redirecionamento (> e >>) para 2000. Isso garante que em todos os lugares dentro do escopo atual que você gera dados formatados de tabela para arquivo, o PowerShell usa 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.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Confirm

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

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:False
Dá suporte a curingas:False
DontShow:False
Aliases:cf

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Encoding

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

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

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

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

Observação

UTF-7* não é mais recomendável para uso. A partir do PowerShell 7.1, é gerado um aviso se você especifica utf7 para o parâmetro Encoding.

Propriedades do parâmetro

Tipo:Encoding
Valor padrão:UTF8NoBOM
Valores aceitos:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:1
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-FilePath

Especifica o caminho para o arquivo de saída.

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False
Aliases:Caminho

Conjuntos de parâmetros

ByPath
Cargo:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes: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.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-InputObject

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

Propriedades do parâmetro

Tipo:PSObject
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:True
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes: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 indicam ao PowerShell que não deve interpretar nenhum caractere como uma sequência de escape. Para mais informações, consulte sobre_Regras_de_Citação.

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False
Aliases:PSPath, LP

Conjuntos de parâmetros

ByLiteralPath
Cargo:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:True
Valor dos argumentos restantes:False

-NoClobber

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

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:None
Dá suporte a curingas:False
DontShow:False
Aliases:NoOverwrite

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-NoNewline

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

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-WhatIf

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

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:False
Dá suporte a curingas:False
DontShow:False
Aliases:wi

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Width

Especifica o número máximo de caracteres em cada linha de saída. Quaisquer caracteres adicionais são 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 é de 80 caracteres. Se você quiser controlar a largura de todas as invocações de Out-File, bem como os operadores de redirecionamento (> e >>), defina $PSDefaultParameterValues['out-file:width'] = 2000 antes de usar Out-File.

Propriedades do parâmetro

Tipo:Int32
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

Entradas

PSObject

Você pode redirecionar qualquer objeto para este cmdlet.

Saídas

None

Esse cmdlet não retorna nenhuma saída.

Observações

Os objetos de entrada são formatados automaticamente como estariam no terminal, mas você pode usar um cmdlet Format-* 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 cmdlet Out-File, use o pipeline. Como alternativa, você pode armazenar dados em uma variável e usar o parâmetro InputObject para passar dados para o cmdlet Out-File.

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

O PowerShell 7.2 adicionou a capacidade de controlar como as sequências de escape ANSI são renderizadas. A saída decorada por ANSI passada para Out-File pode ser alterada com base na configuração da propriedade $PSStyle.OutputRendering. Para saber mais, consulte about_ANSI_Terminals.