HOWTO · PowerShell

Como Exportar Saída para um Arquivo Usando PowerShell

Este artigo discutirá como exportar dados de saída para um arquivo, adicionar dados a um arquivo existente e manipular a saída usando PowerShell.

Vários linguagens de script têm funções ou métodos que permitem exportar dados para um arquivo. Mesmo nos primeiros dias do MS-DOS, o operador de redirecionamento legado (>) pode fazer isso de forma conveniente.

Este artigo discutirá como exportar dados de saída para um arquivo, adicionar dados a um arquivo existente e manipular a saída usando PowerShell.

Introdução ao comando Out-File no PowerShell

Vamos supor que você tenha um script que retorna uma lista de todos os serviços do Windows em seu computador. Quando executamos Get-Service, você receberá todos os objetos que pode esperar no console.

Mas talvez queiramos salvar essa saída em um arquivo de texto. O comando Out-File é uma ótima maneira de fazer isso.

Podemos usar Out-File enviando quase qualquer coisa através do operador de pipeline. Abaixo, podemos ver que o script enviou a saída de Get-Service para o cmdlet, que criou um arquivo de texto chamado Services.txt contendo a mesma exibição no console.

Código de Exemplo:

Get-Service | Out-File -FilePath C:\PS\Services.txt
Get-Content C:\PS\Services.txt

Saída:

Status   Name               DisplayName

Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
<SNIP>

Use o parâmetro -append para adicionar a um arquivo no PowerShell

Por padrão, o comando Out-File sobrescreve qualquer coisa no arquivo de texto fornecido através do parâmetro -FilePath. No entanto, podemos substituir esse comportamento usando o parâmetro -Append.

Talvez estejamos acumulando saída do console em um arquivo e gostaríamos de adicionar texto a um arquivo em vez de sobrescrever. O parâmetro -Append é seu melhor amigo.

Se não usamos o parâmetro Out-File -Append, o conteúdo de C:\PS\File.txt é sobrescrito. Mas, assim que adicionamos o parâmetro -Append, ele adiciona a saída ao final.

Código de Exemplo:

'firststring' | Out-File -FilePath C:\PS\File.txt
Get-Content -Path C:\PS\File.txt

'secondstring' | Out-File -FilePath C:\PS\File.txt -Append
Get-Content C:\PS\File.txt

Saída:

firststring
firststring
secondstring

Altere os dados de saída no PowerShell

Por padrão, este cmdlet tentará replicar o que é mostrado no console, mas há algumas maneiras de manipulá-lo. Por exemplo, o cmdlet tem um parâmetro -NoNewLine que remove todos os caracteres de nova linha.

Código de Exemplo:

Get-Service | Out-File -FilePath C:\PS\Services.txt -NoNewline
Get-Content C:\PS\Services.txt

Saída:

Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application La

Ou, podemos cortar o texto em cada linha em uma contagem de caracteres particular com o parâmetro -Width.

Código de Exemplo:

Get-Service | Out-File -FilePath C:\PS\Services.txt -Width 30
Get-Content C:\PS\Services.txt

Saída:

Status   Name               DisplayName
------   -----              -----------
Stopped  AJRouter           Al