Partilhar via


Out-File

Envia a saída para um ficheiro.

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 ficheiro. Utiliza implicitamente o sistema de formatação do PowerShell para escrever no ficheiro. O ficheiro recebe a mesma representação de apresentação que o terminal. Isto significa que a saída pode não ser ideal para processamento programático, a menos que todos os objetos de entrada sejam cadeias. Quando precisar de especificar parâmetros para a saída, utilize Out-File em vez do operador de redirecionamento (>). Para obter mais informações sobre o redirecionamento, veja about_Redirection.

Exemplos

Exemplo 1: Enviar saída e criar um ficheiro

Este exemplo mostra como enviar uma lista dos processos do computador local para um ficheiro. Se o ficheiro não existir, Out-File cria o ficheiro 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 Processo são enviados pelo pipeline para o Out-File cmdlet. Out-File utiliza o parâmetro FilePath e cria um ficheiro no diretório atual com o nome Process.txt. O Get-Content comando obtém conteúdo do ficheiro e apresenta-o na consola do PowerShell.

Exemplo 2: Impedir que um ficheiro existente seja substituído

Este exemplo impede que um ficheiro existente seja substituído. Por predefinição, Out-File substitui os ficheiros 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 Processo são enviados pelo pipeline para o Out-File cmdlet. Out-File utiliza o parâmetro FilePath e tenta escrever num ficheiro no diretório atual com o nome Process.txt. O parâmetro NoClobber impede que o ficheiro seja substituído e apresenta uma mensagem a indicar que o ficheiro já existe.

Exemplo 3: Enviar saída para um ficheiro 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 Processo são armazenados na variável . $Procs Out-File utiliza o parâmetro FilePath e cria um ficheiro no diretório atual com o nome Process.txt. O parâmetro InputObject transmite os objetos $Procs de processo para o ficheiro Process.txt. O parâmetro Codificação converte o resultado em formato ASCII . O parâmetro Width limita cada linha no ficheiro a 50 carateres para que alguns dados possam ser truncados.

Exemplo 4: utilizar um fornecedor e enviar a saída para um ficheiro

Este exemplo mostra como utilizar o Out-File cmdlet quando não está numa unidade de fornecedor fileSystem . Utilize o Get-PSProvider cmdlet para ver os fornecedores no seu computador local. Para obter mais informações, veja 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 utiliza o parâmetro Caminho para definir a localização atual para o fornecedor Alias:de registo . O Get-Location cmdlet apresenta o caminho completo para Alias:. Get-ChildItem envia objetos pelo pipeline para o Out-File cmdlet. Out-File utiliza o parâmetro FilePath para especificar o caminho completo e o nome do ficheiro para a saída ,C:\TestDir\AliasNames.txt. O Get-Content cmdlet utiliza o parâmetro Caminho e apresenta o conteúdo do ficheiro na consola do PowerShell.

Exemplo 5: definir a largura de saída do ficheiro para todo o âmbito

Este exemplo utiliza $PSDefaultParameterValues para definir o Width parâmetro para todas as invocações de e os operadores de Out-File redirecionamento (> e >>) para 2000. Isto garante que em qualquer parte do âmbito atual que produz dados formatados em tabela para ficheiro, o PowerShell utiliza uma largura de linha de 2000 em vez de uma largura de linha determinada pela largura da consola do anfitrião 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 $PSDefaultParameterValueso , consulte about_Preference_Variables.

Parâmetros

-Append

Adiciona a saída ao fim de um ficheiro existente.

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

-Confirm

Solicita a 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 ficheiro de destino. O valor predefinido é utf8NoBOM.

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

  • ascii: utiliza a codificação para o conjunto de carateres ASCII (7 bits).
  • bigendianunicode: codifica no formato UTF-16 com a ordem de bytes big-endian.
  • bigendianutf32: codifica no formato UTF-32 com a ordem de bytes big-endian.
  • oem: utiliza a codificação predefinida para ms-DOS e programas de consola.
  • unicode: codifica no formato UTF-16 com a ordem de bytes de pequeno-endiano.
  • utf7: codifica no formato UTF-7.
  • utf8: codifica no formato UTF-8.
  • utf8BOM: Codifica no formato UTF-8 com Marca de Encomenda byte (BOM)
  • utf8NoBOM: Codifica no formato UTF-8 sem Marca de Encomenda byte (BOM)
  • utf32: codifica no formato UTF-32.

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

Nota

UTF-7* já não é recomendado para utilizar. A partir do PowerShell 7.1, é escrito um aviso se especificar utf7 para o parâmetro 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 ficheiro 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 só de leitura e substitui um ficheiro só de 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 escrever no ficheiro. Introduza uma variável que contenha os objetos ou escreva um comando ou expressão que obtenha 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 ficheiro de saída. O parâmetro LiteralPath é utilizado exatamente como está escrito. Os carateres universais não são aceites. Se o caminho incluir carateres de escape, coloque-o entre aspas. As aspas únicas indicam ao PowerShell para não interpretar os carateres como sequências de escape. Para obter mais informações, veja 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 ficheiro existente seja substituído e apresenta uma mensagem a indicar que o ficheiro já existe. Por predefinição, se existir um ficheiro no caminho especificado, Out-File substitui o ficheiro sem aviso prévio.

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 escrito no ficheiro não termina com um caráter de nova linha. As representações de cadeias dos objetos de entrada são concatenadas para formar o resultado. Não são inseridos espaços ou linhas novas entre as cadeias de saída. Não é adicionada nenhuma nova linha após a última cadeia de saída.

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

-WhatIf

Apresenta o que aconteceria mediante a execução do cmdlet. 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 máximo de carateres em cada linha de saída. Quaisquer carateres adicionais são truncados, não moldados. Se este parâmetro não for utilizado, a largura é determinada pelas características do anfitrião. A predefinição para a consola do PowerShell é de 80 carateres. Se quiser controlar a largura de todas as invocações de, bem como os operadores de Out-File redirecionamento (> e >>), defina $PSDefaultParameterValues['out-file:width'] = 2000 antes de utilizar Out-File.

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

Entradas

PSObject

Pode encaminhar qualquer objeto para este cmdlet.

Saídas

None

Este cmdlet não devolve nenhuma saída.

Notas

Os objetos de entrada são automaticamente formatados como estariam no terminal, mas pode utilizar um Format-* cmdlet para controlar explicitamente a formatação da saída para o ficheiro. 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, utilize o pipeline. Em alternativa, pode armazenar dados numa variável e utilizar o parâmetro InputObject para transmitir dados para o Out-File cmdlet.

Out-File guarda dados num ficheiro, mas não produz objetos de saída no pipeline.

O PowerShell 7.2 adicionou a capacidade de controlar a forma como as sequências de escape do ANSI são compostas. O resultado decorado com ANSI que é transmitido para Out-File pode ser alterado com base na definição da $PSStyle.OutputRendering propriedade. Para obter mais informações, veja about_ANSI_Terminals.