Com a automação, a leitura de dados de um arquivo de texto é um cenário comum. A maioria das linguagens de programação tem pelo menos uma maneira de ler arquivos de texto, e o PowerShell não é exceção. O cmdlet Get-Content
do PowerShell, equivalente ao tail do PowerShell, lê o conteúdo de um arquivo de texto e importa os dados para uma sessão do PowerShell.
O cmdlet Get-Content
do PowerShell é uma ferramenta indispensável quando você precisa usar arquivos de texto como entrada para o seu script. Talvez seu script do PowerShell precise ler uma lista de computadores para monitorar ou importar um modelo de e-mail para enviar aos seus usuários. O Get-Content
do PowerShell suporta facilmente esses cenários!
E que tal seguir um arquivo de log em tempo real? Sim, o Get-Content
do PowerShell também pode fazer isso! Continue lendo este artigo e você aprenderá como usar o cmdlet Get-Content
para ler arquivos de texto no PowerShell.
Pré-requisitos
Se você estiver interessado em seguir os exemplos deste tutorial, precisará dos seguintes requisitos.
- Você precisará de um computador com Windows 10. Este tutorial utiliza a versão 20H2 do Windows 10. Mas não se preocupe, você estará bem com a versão do Windows 10 que tiver.
- Você deve ter pelo menos o Windows PowerShell 5.1, ou PowerShell 7.1 instalado no seu computador. Aqui é usada a versão 7.1 do PowerShell, mas qualquer versão funcionará!
- Você estará escrevendo e testando comandos, então precisará de um editor de código. Os editores recomendados são o Windows PowerShell ISE, integrado ao Windows, e o Visual Studio Code (VSCode). Este artigo utiliza o VSCode.
- Também será útil se você criar um diretório de trabalho no seu computador. A pasta de trabalho pode estar em qualquer lugar que você desejar. No entanto, observe que os exemplos neste tutorial residem na pasta C:\demo.
- Para começar, você precisa de algum conteúdo! Crie um arquivo, no seu diretório de trabalho, com o nome fruits.txt que inclua dez frutas diferentes para simplificar. Você estará utilizando este arquivo de texto em todos os exemplos.
Não sabe qual versão do PowerShell você tem? Visite o artigo Como Verificar sua Versão do PowerShell (Todas as Maneiras!).
Lendo um Arquivo de Texto e Retornando o Resultado como um Array de Strings
O cmdlet Get-Content
lê o conteúdo de um arquivo e, por padrão, retorna cada linha de um arquivo de texto como um objeto de string. Como resultado, a coleção de objetos do PowerShell se torna um array de objetos de string.
O código abaixo lê o conteúdo do arquivo fruits.txt e exibe o resultado no console do PowerShell, como visto na captura de tela abaixo.

Get-Content
.Get-Content
lê e armazena o conteúdo como um array, mas como você pode ter certeza disso? Primeiro, salve o conteúdo em um objeto do PowerShell que você pode examinar para determinar o tipo.
Olhando para a captura de tela abaixo, a variável $fruits
é uma matriz que contém dez objetos. Cada objeto representa uma única linha de texto.

Retornando uma Linha Específica de um Arquivo de Texto
No exemplo anterior, você aprendeu que o resultado padrão de Get-Content
é uma matriz ou uma coleção de objetos. Cada item em uma coleção corresponde a um número de índice, e os índices do PowerShell geralmente começam em zero.
A captura de tela abaixo mostra que existem dez itens na matriz de strings. A matriz indexou os dez itens de zero a nove.

Para exibir apenas a quinta linha de conteúdo, você precisará especificar o número de índice 4
, entre colchetes (conhecido como notação de matriz).
Você pode notar que o comando
Get-Content
está entre parênteses. Essa notação indica ao PowerShell para executar o comando entre parênteses primeiro antes de outras operações.
Na captura de tela abaixo, você verá que o único resultado retornado é raspberry
, que é o item no índice 4
e corresponde à quinta linha no arquivo de texto.

Get-Content
results.E se você precisar obter o conteúdo na última linha? Felizmente, você não precisa saber o número total de linhas. Em vez disso, use [-1]
como o índice, e Get-Content
exibirá apenas a última linha do arquivo.
Limitando o Número de Principais Resultados Retornados por Get-Content
Use o parâmetro TotalCount
do Get-Content
para recuperar um número especificado de linhas de um arquivo de texto. O parâmetro TotalCount
aceita um valor long, o que significa um valor máximo de 9.223.372.036.854.775.807.
Por exemplo, o comando abaixo lê o conteúdo e limita o resultado a três itens.
Como seria de esperar, o resultado abaixo exibe apenas as três primeiras linhas do início do arquivo de texto.

Get-Content
command and the TotalCount
parameter.Use o parâmetro Tail do PowerShell para retornar resultados do final de um arquivo
No exemplo anterior, você usou o cmdlet Get-Content
do PowerShell para ler um arquivo de texto e limitar os resultados principais. Também é possível alcançar o oposto com o Get-Content
do PowerShell. Use o parâmetro Tail
do PowerShell para ler um número especificado de linhas do final de um arquivo.
O código de exemplo abaixo lê o arquivo de texto e exibe o conteúdo das quatro últimas linhas.
Após executar o comando tail
do PowerShell, o resultado esperado será limitado às últimas quatro linhas de conteúdo, como mostrado na imagem abaixo.

Get-Content
Tail
parameter. O parâmetro Tail
é frequentemente usado junto com o parâmetro Wait
. Usar o parâmetro Wait
mantém o arquivo aberto e verifica novos conteúdos a cada segundo. A demonstração abaixo mostra os parâmetros Tail
e Wait
em ação. Para sair do Wait
, use a combinação de teclas CTRL+C
.

wait
and Tail
parameters with Get-Content
.Retornando os Resultados como uma Única String
Você pode ter notado em exemplos anteriores que lidou com arrays de strings como saída do PowerShell Get-Content
. E como aprendeu até agora, a natureza dos arrays permite operar sobre o conteúdo item por item.
Arrays geralmente funcionam bem, mas podem dificultar a substituição de strings. O parâmetro Raw
do Get-Content
lê todo o conteúdo de um arquivo em um único objeto de string. Embora o código abaixo seja o mesmo usado no primeiro exemplo, o parâmetro Raw
armazena o conteúdo do arquivo como uma única string.
A captura de tela abaixo demonstra que adicionar o parâmetro Raw
ao Get-Content
faz com que o conteúdo seja tratado como uma única string e não como um array de objetos.

Raw
parameter of Get-Content
reads the file content as a single string object.Depois de obter o conteúdo de um arquivo em uma única string usando o parâmetro Raw
, o que você pode fazer com ele? Talvez precise encontrar e substituir uma string dentro desse conteúdo do arquivo. No exemplo abaixo, o Get-Content
lê o conteúdo de um arquivo como uma única string. Em seguida, usando o operador replace
, substitui uma palavra específica por outra.
Relacionado: Encontrando e Substituindo Strings

replace
operator.Leia o conteúdo apenas de arquivos que corresponderam a um filtro
Você tem uma pasta cheia de arquivos, mas precisa ler o conteúdo de apenas alguns selecionados? Com PowerShell Get-Content
, você não precisa filtrar os arquivos separadamente antes de ler o conteúdo deles. O parâmetro Filter
do Get-Content
limita quais arquivos o cmdlet lê.
Para demonstrar a leitura do conteúdo apenas de arquivos selecionados, primeiro, crie alguns arquivos para ler. Como mostrado abaixo, crie os arquivos na sua pasta de trabalho usando Add-Content
.

.log
files using Add-Content
.Com seus arquivos de teste criados, use os parâmetros Filter
e Path
para ler apenas os arquivos .log
no diretório raiz. O asterisco usado na definição do filtro indica ao Get-Content
para ler qualquer arquivo com o final .log
. O asterisco final do parâmetro de caminho limita a leitura dos arquivos apenas ao diretório raiz.
Como mostrado na saída abaixo, apenas o conteúdo dos arquivos .log
é exibido.

Filter
parameter with PowerShell Get-Content
to limit the read files.Relacionado: Get-ChildItem: Listando Arquivos, Registro, Certificados e Mais como Um
Lendo o Fluxo de Dados Alternativo de um Arquivo
Até agora, você tem trabalhado exclusivamente com arquivos de texto, mas o Get-Content
pode ler dados do fluxo de dados alternativo (ADS) de um arquivo. Sinta-se à vontade para ler mais sobre fluxos, mas você pode pensar em um fluxo como outro atributo de dados armazenado junto com o conteúdo típico do arquivo.
Os fluxos de dados alternativos são uma característica do sistema de arquivos NTFS do Windows, portanto, isso não se aplica ao
Get-Content
quando usado com sistemas operacionais não-Windows.
Você pode ver os fluxos de dados alternativos executando o Get-Item
com o parâmetro Stream
. Ao referenciar um arquivo usando o parâmetro Stream
, Get-Item
retorna uma propriedade chamada Stream
como mostrado abaixo. Este fluxo de conteúdo de arquivo padrão é representado com :$DATA
.
Para demonstrar o fluxo padrão :$DATA
, use o cmdlet Get-Item
para exibir todos os fluxos disponíveis no arquivo fruits.txt. Como mostrado abaixo, Get-Item
exibe um único fluxo.

Get-Item
.O parâmetro Stream
do Get-Content
lê explicitamente o conteúdo do fluxo padrão :$DATA
como mostrado abaixo. O conteúdo retornado é o mesmo que a saída padrão do Get-Content
já que o fluxo :$DATA
é lido por padrão.

:$DATA
stream using Get-Content
.Para demonstrar a recuperação de um fluxo de dados alternativo usando Get-Content
, modifique um arquivo usando Add-Content
para adicionar o novo fluxo. Use Get-Item
para mostrar o novo fluxo junto com o fluxo padrão :$DATA
, como visto no exemplo abaixo.

Como apenas o fluxo :$DATA
é lido por padrão, use o parâmetro Stream
de Get-Content
para recuperar o conteúdo do novo fluxo Secret
. Como mostrado abaixo, o conteúdo do fluxo Secret
é exibido em vez do conteúdo padrão do arquivo.

Get-Content
to read the Secret
alternate data stream content.Próximos Passos com PowerShell Get-Content
Neste artigo, você aprendeu muitas maneiras de usar Get-Content
para ler e manipular conteúdo. Você até aprendeu que Get-Content
é flexível o suficiente para ler conteúdo de fluxos de dados alternativos!
Com o que você aprendeu neste artigo, que outras maneiras você pode usar Get-Content
em seu trabalho? Talvez você possa usar Get-Content
para determinar se um arquivo de backup está desatualizado e acionar uma chamada automática para executar um trabalho de backup?
Source:
https://adamtheautomator.com/powershell-get-content/