Get-Content

Obtém o conteúdo do item no local especificado.

Sintaxe

Get-Content
   [-ReadCount <Int64>]
   [-TotalCount <Int64>]
   [-Tail <Int32>]
   [-Path] <String[]>
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-Force]
   [-Credential <PSCredential>]
   [-Delimiter <String>]
   [-Wait]
   [-Raw]
   [-Encoding <Encoding>]
   [-AsByteStream]
   [-Stream <String>]
   [<CommonParameters>]
Get-Content
   [-ReadCount <Int64>]
   [-TotalCount <Int64>]
   [-Tail <Int32>]
   -LiteralPath <String[]>
   [-Filter <String>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-Force]
   [-Credential <PSCredential>]
   [-Delimiter <String>]
   [-Wait]
   [-Raw]
   [-Encoding <Encoding>]
   [-AsByteStream]
   [-Stream <String>]
   [<CommonParameters>]

Description

O Get-Content cmdlet obtém o conteúdo do item no local especificado pelo caminho, como o texto em um arquivo ou o conteúdo de uma função. Para arquivos, o conteúdo é lido uma linha por vez e retorna uma coleção de objetos, cada um representando uma linha de conteúdo.

A partir do PowerShell 3.0, Get-Content também pode obter um número especificado de linhas do início ou do fim de um item.

Exemplos

Exemplo 1: Obter o conteúdo de um arquivo de texto

Este exemplo obtém o conteúdo de um arquivo no diretório atual. O LineNumbers.txt arquivo tem 100 linhas no formato, Esta é a Linha X e é usado em vários exemplos.

1..100 | ForEach-Object { Add-Content -Path .\LineNumbers.txt -Value "This is line $_." }
Get-Content -Path .\LineNumbers.txt

This is Line 1
This is Line 2
...
This is line 99.
This is line 100.

Os valores de matriz de 1 a 100 são enviados pelo pipeline para o ForEach-Object cmdlet. ForEach-Object Usa um bloco de script com o Add-Content cmdlet para criar o LineNumbers.txt arquivo. A variável $_ representa os valores da matriz à medida que cada objeto é enviado pelo pipeline. O Get-Content cmdlet usa o parâmetro Path para especificar o LineNumbers.txt arquivo e exibe o conteúdo no console do PowerShell.

Exemplo 2: Limitar o número de linhas que Get-Content retorna

Este comando obtém as primeiras cinco linhas de um arquivo. O parâmetro TotalCount obtém as primeiras cinco linhas de conteúdo. Este exemplo usa o referenciado LineNumbers.txt no Exemplo 1.

Get-Content -Path .\LineNumbers.txt -TotalCount 5

This is Line 1
This is Line 2
This is Line 3
This is Line 4
This is Line 5

Exemplo 3: Obter uma linha específica de conteúdo de um arquivo de texto

Esse comando obtém um número específico de linhas de um arquivo e exibe apenas a última linha desse conteúdo. O parâmetro TotalCount obtém as primeiras 25 linhas de conteúdo. Este exemplo usa o arquivo referenciado LineNumbers.txt no Exemplo 1.

(Get-Content -Path .\LineNumbers.txt -TotalCount 25)[-1]

This is Line 25

O Get-Content comando é colocado entre parênteses para que o comando seja concluído antes de ir para a próxima etapa. Get-Contentretorna uma matriz de linhas, isso permite que você adicione a notação de índice após o parêntese para recuperar um número de linha específico. Nesse caso, o [-1] índice especifica o último índice na matriz retornada de 25 linhas recuperadas.

Exemplo 4: Obter a última linha de um arquivo de texto

Esse comando obtém a última linha de conteúdo de um arquivo. Este exemplo usa o LineNumbers.txt arquivo que foi criado no Exemplo 1.

Get-Item -Path .\LineNumbers.txt | Get-Content -Tail 1

This is Line 100

Este exemplo usa o Get-Item cmdlet para demonstrar que você pode canalizar arquivos para o Get-Content. O parâmetro Tail obtém a última linha do arquivo. Esse método é mais rápido do que recuperar todas as linhas em uma variável e usar a [-1] notação de índice.

Exemplo 5: Obter o conteúdo de um fluxo de dados alternativo

Este exemplo descreve como usar o parâmetro Stream para obter o conteúdo de um fluxo de dados alternativo para arquivos armazenados em um volume NTFS do Windows. Neste exemplo, o Set-Content cmdlet é usado para criar conteúdo de exemplo em um arquivo chamado Stream.txt.

Set-Content -Path .\Stream.txt -Value 'This is the content of the Stream.txt file'
# Specify a wildcard to the Stream parameter to display all streams of the recently created file.
Get-Item -Path .\Stream.txt -Stream *

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt::$DATA
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName   : Stream.txt::$DATA
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\Test\Stream.txt
Stream        : :$DATA
Length        : 44

# Retrieve the content of the primary stream.
# Note the single quotes to prevent variable substitution.
Get-Content -Path .\Stream.txt -Stream ':$DATA'

This is the content of the Stream.txt file

# Alternative way to get the same content.
Get-Content -Path .\Stream.txt -Stream ""
# The primary stream doesn't need to be specified to get the primary stream of the file.
# This gets the same data as the prior two examples.
Get-Content -Path .\Stream.txt

This is the content of the Stream.txt file

# Use the Stream parameter of Add-Content to create a new Stream containing sample content.
$addContentSplat = @{
    Path = '.\Stream.txt'
    Stream = 'NewStream'
    Value = 'Added a stream named NewStream to Stream.txt'
}
Add-Content @addContentSplat

# Use Get-Item to verify the stream was created.
Get-Item -Path .\Stream.txt -Stream *

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt::$DATA
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName   : Stream.txt::$DATA
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\Test\Stream.txt
Stream        : :$DATA
Length        : 44

PSPath        : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt:NewStream
PSParentPath  : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName   : Stream.txt:NewStream
PSDrive       : C
PSProvider    : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName      : C:\Test\Stream.txt
Stream        : NewStream
Length        : 46

# Retrieve the content of your newly created Stream.
Get-Content -Path .\Stream.txt -Stream NewStream

Added a stream named NewStream to Stream.txt

O parâmetro Stream é um parâmetro dinâmico do provedor FileSystem. Por padrão Get-Content , recupera apenas dados do padrão ou :$DATA fluxo. Os fluxos podem ser usados para armazenar dados ocultos, como atributos, configurações de segurança ou outros dados. Eles também podem ser armazenados em diretórios sem serem itens filhos.

Exemplo 6: Obter conteúdo bruto

Os comandos neste exemplo obtêm o conteúdo de um arquivo como uma cadeia de caracteres, em vez de uma matriz de cadeias de caracteres. Por padrão, sem o parâmetro dinâmico Raw, o conteúdo é retornado como uma matriz de cadeias de caracteres delimitadas por nova linha. Este exemplo usa o arquivo referenciado LineNumbers.txt no Exemplo 1.

$raw = Get-Content -Path .\LineNumbers.txt -Raw
$lines = Get-Content -Path .\LineNumbers.txt
Write-Host "Raw contains $($raw.Count) lines."
Write-Host "Lines contains $($lines.Count) lines."

Raw contains 1 lines.
Lines contains 100 lines.

Exemplo 7: Usar filtros com Get-Content

Você pode especificar um filtro para o Get-Content cmdlet. Ao usar filtros para qualificar o parâmetro Path , você precisa incluir um asterisco à direita (*) para indicar o conteúdo do caminho.

O comando a seguir obtém o conteúdo de todos os *.log arquivos no C:\Temp diretório.

Get-Content -Path C:\Temp\* -Filter *.log

Exemplo 8: Obter o conteúdo do arquivo como uma matriz de bytes

Este exemplo demonstra como obter o conteúdo de um arquivo como um [byte[]] único objeto.

$byteArray = Get-Content -Path C:\temp\test.txt -AsByteStream -Raw
Get-Member -InputObject $bytearray

TypeName: System.Byte[]

Name           MemberType            Definition
----           ----------            ----------
Count          AliasProperty         Count = Length
Add            Method                int IList.Add(System.Object value)

O primeiro comando usa o parâmetro AsByteStream para obter o fluxo de bytes do arquivo. O parâmetro Raw garante que os bytes sejam retornados como um [System.Byte[]]. Se o parâmetro Raw estiver ausente, o valor retornado será um fluxo de bytes, que é interpretado pelo PowerShell como [System.Object[]].

Parâmetros

-AsByteStream

Especifica que o conteúdo deve ser lido como um fluxo de bytes. O parâmetro AsByteStream foi introduzido no Windows PowerShell 6.0.

Um aviso ocorre quando você usa o parâmetro AsByteStream com o parâmetro Coding . O parâmetro AsByteStream ignora qualquer codificação e a saída é retornada como um fluxo de bytes.

Ao ler e gravar em arquivos binários, use o parâmetro AsByteStream e um valor de 0 para o parâmetro ReadCount . Um valor ReadCount de 0 lê o arquivo inteiro em uma única operação de leitura. O valor ReadCount padrão, 1, lê um byte em cada operação de leitura e converte cada byte em um objeto separado. O encaminhamento de saída de byte único para Set-Content causa erros, a menos que você use o parâmetro AsByteStream com Set-Content.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Credential

Observação

Esse parâmetro não tem suporte de nenhum provedor instalado com o PowerShell. Para representar outro usuário ou elevar suas credenciais ao executar esse cmdlet, use Invoke-Command.

Tipo:PSCredential
Cargo:Named
Valor padrão:Current user
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-Delimiter

Especifica o delimitador que Get-Content usa para dividir o arquivo em objetos enquanto ele lê. O padrão é \n, o caractere de fim de linha. Ao ler um arquivo de texto, Get-Content retorna uma coleção de objetos de cadeia de caracteres, cada um terminando com um caractere de fim de linha. Quando você insere um delimitador que não existe no arquivo, Get-Content retorna o arquivo inteiro como um objeto único e não delimitado.

Você pode usar esse parâmetro para dividir um arquivo grande em arquivos menores especificando um separador de arquivos, como o delimitador. O delimitador é preservado (não descartado) e se torna o último item em cada seção do arquivo.

Delimiter é um parâmetro dinâmico que o provedor FileSystem adiciona ao Get-Content cmdlet. Esse parâmetro funciona somente em unidades de sistema de arquivos.

Observação

Atualmente, quando o valor do parâmetro Delimiter é uma string vazia, Get-Content não retorna nada. Esse é um problema conhecido. Para forçar Get-Content o retorno do arquivo inteiro como uma única cadeia de caracteres não delimitada. Insira um valor que não existe no arquivo.

Tipo:String
Cargo:Named
Valor padrão:End-of-line character
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Encoding

Especifica o tipo de codificação para o arquivo de destino. O valor padrão é utf8NoBOM.

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

  • ascii: Usa a codificação para o conjunto de caracteres ASCII (7 bits).
  • ansi: Usa a codificação para a página de código ANSI da cultura atual. Essa opção foi adicionada no PowerShell 7.4.
  • bigendianunicode: Codifica no formato UTF-16 usando a ordem de bytes big-endian.
  • bigendianutf32: Codifica no formato UTF-32 usando a ordem de bytes big-endian.
  • oem: Usa a codificação padrão para MS-DOS e programas de console.
  • unicode: Codifica no formato UTF-16 usando a ordem de bytes little-endian.
  • utf7: Codifica no formato UTF-7.
  • utf8: Codifica no formato UTF-8.
  • utf8BOM: Codifica no formato UTF-8 com Marca de Ordem de Byte (BOM)
  • utf8NoBOM: Codifica no formato UTF-8 sem Marca de Ordem de Byte (BOM)
  • utf32: Codifica no formato UTF-32.

A codificação é um parâmetro dinâmico que o provedor FileSystem adiciona ao Get-Content cmdlet. Esse parâmetro está disponível apenas em unidades do sistema de arquivos.

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

A partir do PowerShell 7.4, você pode usar o Ansi valor do parâmetro Encoding para passar a ID numérica da página de código ANSI da cultura atual sem precisar especificá-la manualmente.

Observação

O uso de UTF-7* não é mais recomendado. A partir do PowerShell 7.1, um aviso será escrito se você especificar utf7 para o parâmetro Codificação .

Tipo:Encoding
Valores aceitos:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Cargo:Named
Valor padrão:UTF8NoBOM
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Exclude

Especifica, como uma matriz de cadeia de caracteres, um item ou itens que esse cmdlet exclui na operação. O valor desse parâmetro qualifica o parâmetro Path .

Insira um elemento ou padrão de caminho, como *.txt. Caracteres curinga são permitidos.

O parâmetro Exclude é efetivo somente quando o comando inclui o conteúdo de um item, como C:\Windows\*, em que o caractere curinga especifica o conteúdo do C:\Windows diretório.

Tipo:String[]
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:True

-Filter

Especifica um filtro para qualificar o parâmetro Path . O provedor FileSystem é o único provedor do PowerShell instalado que dá suporte ao uso de filtros. Você pode encontrar a sintaxe da linguagem de filtro FileSystem em about_Wildcards. Os filtros são mais eficientes do que outros parâmetros, pois o provedor os aplica quando o cmdlet obtém os objetos, em vez de fazer com que o PowerShell filtre os objetos depois que eles são recuperados.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:True

-Force

Force pode substituir um atributo somente leitura ou criar diretórios para concluir um caminho de arquivo. O parâmetro Force não tenta alterar as permissões de arquivo ou substituir as restrições de segurança.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Include

Especifica, como uma matriz de cadeia de caracteres, um item ou itens que esse cmdlet inclui na operação. O valor desse parâmetro qualifica o parâmetro Path . Insira um elemento ou padrão de caminho, como "*.txt". Caracteres curinga são permitidos. O parâmetro Include é efetivo somente quando o comando inclui o conteúdo de um item, como C:\Windows\*, em que o caractere curinga especifica o conteúdo do C:\Windows diretório.

Tipo:String[]
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:True

-LiteralPath

Especifica um caminho para um ou mais locais. O valor de LiteralPath é usado exatamente como é digitado. Nenhum caractere é interpretado como caractere curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. As aspas simples informam ao PowerShell para não interpretar nenhum caractere como sequências de escape.

Para obter mais informações, consulte about_Quoting_Rules.

Tipo:String[]
Aliases:PSPath, LP
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-Path

Especifica o caminho para um item onde Get-Content obtém o conteúdo. Caracteres curinga são permitidos. Os caminhos devem ser caminhos para itens, não para contêineres. Por exemplo, você deve especificar um caminho para um ou mais arquivos, não um caminho para um diretório.

Tipo:String[]
Cargo:0
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:True

-Raw

Ignora caracteres de nova linha e retorna todo o conteúdo de um arquivo em uma cadeia de caracteres com as novas linhas preservadas. Por padrão, os caracteres de nova linha em um arquivo são usados como delimitadores para separar a entrada em uma matriz de strings. Esse parâmetro foi introduzido no PowerShell 3.0.

Raw é um parâmetro dinâmico que o provedor FileSystem adiciona ao Get-Content cmdlet Esse parâmetro funciona apenas em unidades do sistema de arquivos.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ReadCount

Especifica quantas linhas de conteúdo são enviadas por meio do pipeline por vez. O valor padrão é 1. Um valor de 0 (zero) ou números negativos envia todo o conteúdo de uma só vez.

Esse parâmetro não altera o conteúdo exibido, mas afeta o tempo necessário para exibir o conteúdo. À medida que o valor de ReadCount aumenta, o tempo necessário para retornar a primeira linha aumenta, mas o tempo total da operação diminui. Isso pode fazer uma diferença perceptível em itens grandes.

Tipo:Int64
Cargo:Named
Valor padrão:1
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-Stream

Observação

Este parâmetro está disponível apenas no Windows.

Obtém o fluxo de arquivos NTFS alternativo especificado do conteúdo do arquivo. Insira o nome do fluxo. Não há suporte para caractere curinga.

Stream é um parâmetro dinâmico que o provedor FileSystem adiciona ao Get-Content cmdlet. Este parâmetro funciona apenas em unidades do sistema de arquivos em sistemas Windows.

Este parâmetro foi introduzido no Windows PowerShell 3.0. No PowerShell 7.2, pode recuperar o conteúdo de fluxos de dados alternativos de diretórios, Get-Content bem como arquivos.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Tail

Especifica o número de linhas a partir do final de um arquivo ou outro item. Você pode usar o nome do parâmetro Tail ou seu alias, Last. Um valor de 0 não retorna linhas. Valores negativos causam um erro.

Esse parâmetro foi introduzido no PowerShell 3.0.

Tipo:Int32
Aliases:Last
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-TotalCount

Especifica o número de linhas desde o início de um arquivo ou outro item. Um valor de 0 não retorna linhas. Valores negativos causam um erro.

Você pode usar o nome do parâmetro TotalCount ou seus aliases, First ou Head.

Tipo:Int64
Aliases:First, Head
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-Wait

Faz com que o cmdlet aguarde indefinidamente, mantendo o arquivo aberto, até ser interrompido. Enquanto espera, verifica o arquivo uma vez por segundo e gera novas linhas, Get-Content se houver. Quando usado com o parâmetro TotalCount , Get-Content aguarda até que o número especificado de linhas esteja disponível no arquivo especificado. Por exemplo, se você especificar um TotalCount de 10 e o arquivo já tiver 10 ou mais linhas, Get-Content retornará as 10 linhas e sairá. Se o arquivo tiver menos de 10 linhas, Get-Content o emitirá cada linha à medida que ela chegar, mas aguardará até que a décima linha chegue antes de sair.

Você pode interromper Wait pressionando Ctrl+C. A exclusão do arquivo causa um erro de não encerramento que também interrompe a espera.

Wait é um parâmetro dinâmico que o provedor FileSystem adiciona ao Get-Content cmdlet. Esse parâmetro funciona somente em unidades de sistema de arquivos. Wait não pode ser combinado com Raw.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

Int64

Você pode canalizar a contagem de leitura ou a contagem total para esse cmdlet.

String[]

Você pode canalizar caminhos para esse cmdlet.

PSCredential

Você pode canalizar credenciais para esse cmdlet.

Saídas

Byte

Quando você usa o parâmetro AsByteStream , esse cmdlet retorna o conteúdo como bytes.

String

Por padrão, esse cmdlet retorna o conteúdo como uma matriz de cadeias de caracteres, uma por linha. Quando você usa o parâmetro Raw , ele retorna uma única cadeia de caracteres contendo todas as linhas do arquivo.

Observações

O PowerShell inclui os seguintes aliases para Get-Content:

  • Todas as plataformas:
    • gc
    • type
  • Windows:
    • cat

O Get-Content cmdlet foi projetado para funcionar com os dados expostos por qualquer provedor. Para obter os provedores em sua sessão, use o Get-PSProvider cmdlet. Para obter mais informações, consulte about_Providers.