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 $PSDefaultParameterValues
o , 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
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.