Com a automação, a leitura de dados de um arquivo de texto é um cenário comum. A maioria das linguagens de programação possui 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 seu script. Talvez seu script do PowerShell precise ler uma lista de computadores para monitorar ou importar um modelo de email para enviar aos 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 pode fazer isso também! Continue lendo este artigo e você aprenderá como usar o cmdlet Get-Content
para ler arquivos de texto no PowerShell.
Pré-requisitos
Se você está interessado em seguir os exemplos deste tutorial, você precisará dos seguintes requisitos.
- Você precisará de um computador com Windows 10. Este tutorial usa a versão 20H2 do Windows 10. Mas não se preocupe, você estará bem com a versão do Windows 10 que você tem.
- 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 uma das versões 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 em seu computador. O diretório de trabalho pode estar em qualquer lugar que você desejar. No entanto, você perceberá que os exemplos neste tutorial estão no diretório C:\demo.
- Para começar, você precisa de algum conteúdo! Crie um arquivo, no seu diretório de trabalho, com o nome frutas.txt que inclua dez frutas diferentes para simplicidade. Você usará este arquivo de texto em todos os exemplos.
Não sabe qual versão do PowerShell você tem? Visite o artigo Como Verificar a Versão do seu PowerShell (Todas as Formas!).
Lendo um Arquivo de Texto e Retornando o Resultado como uma Matriz 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 uma matriz de objetos de string.
O código abaixo lê o conteúdo do arquivo frutas.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 uma matriz, mas como 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 do Get-Content
é uma matriz ou uma coleção de objetos. Cada item na 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 há 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 do índice 4
, cercado por 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 o Get-Content
exibirá apenas a última linha do arquivo.
Limitando o Número de Principais Resultados Retornados pelo Get-Content
Use o parâmetro TotalCount
de Get-Content
para recuperar um número especificado de linhas de um arquivo de texto. O parâmetro TotalCount
aceita um valor longo, 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 esperado, 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 superiores. 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 últimas quatro 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 por novo conteúdo 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 nos exemplos anteriores que lidou com matrizes de strings como saída do PowerShell Get-Content
. E como aprendeu até agora, a natureza das matrizes permite que você opere no conteúdo um item de cada vez.
As matrizes geralmente funcionam bem, mas podem tornar a substituição de strings mais difícil. 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
resulta no tratamento do conteúdo como uma única string e não como uma matriz de objetos.

Raw
parameter of Get-Content
reads the file content as a single string object.Depois de ter o conteúdo de um arquivo em uma única string usando o parâmetro Raw
, o que você pode fazer com ele? Talvez você precise encontrar e substituir uma string dentro do conteúdo desse arquivo. No exemplo abaixo, 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 Correspondam a um Filtro
Você tem uma pasta cheia de arquivos, mas precisa ler o conteúdo de apenas alguns selecionados? Com o 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 o Add-Content
.

.log
files using Add-Content
.Com seus arquivos de teste criados, use os parâmetros Filter
e Path
para ler apenas arquivos .log
no diretório raiz. O asterisco usado na definição do filtro indica ao Get-Content
que leia qualquer arquivo que termine com .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 comando 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 em sistemas operacionais não-Windows.
Você pode ver os fluxos de dados alternativos executando o comando Get-Item
com o parâmetro Stream
. Ao referenciar um arquivo usando o parâmetro Stream
, o Get-Item
retorna uma propriedade chamada Stream
, como mostrado abaixo. Este fluxo padrão de conteúdo de arquivo é representado por :$DATA
.
Para demonstrar o fluxo padrão :$DATA
, use o cmdlet Get-Item
para exibir todos os fluxos disponíveis no arquivo frutas.txt. Como mostrado abaixo, o 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
, pois 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 ao lado do fluxo padrão :$DATA
, como visto no exemplo abaixo.

Como apenas o fluxo :$DATA
é lido por padrão, use o parâmetro Stream
do 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 o 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 o 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/