Get-Content

Ottiene il contenuto dell'elemento nel percorso specificato.

Sintassi

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>]

Descrizione

Il Get-Content cmdlet ottiene il contenuto dell'elemento nel percorso specificato dal percorso, ad esempio il testo in un file o il contenuto di una funzione. Per i file, il contenuto viene letto una riga alla volta e restituisce una raccolta di oggetti, ognuno che rappresenta una riga di contenuto.

A partire da PowerShell 3.0, Get-Content può anche ottenere un numero specificato di righe dall'inizio o dalla fine di un elemento.

Esempio

Esempio 1: Ottenere il contenuto di un file di testo

In questo esempio viene restituito il contenuto di un file nella directory corrente. Il LineNumbers.txt file ha 100 righe nel formato, Questo è Line X e viene usato in diversi esempi.

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.

I valori della matrice 1-100 vengono inviati alla pipeline al ForEach-Object cmdlet . ForEach-Object usa un blocco di script con il Add-Content cmdlet per creare il LineNumbers.txt file. La variabile $_ rappresenta i valori della matrice man mano che ogni oggetto viene inviato alla pipeline. Il Get-Content cmdlet usa il parametro Path per specificare il LineNumbers.txt file e visualizza il contenuto nella console di PowerShell.

Esempio 2: Limitare il numero di righe restituite da Get-Content

Questo comando ottiene le prime cinque righe di un file. Il parametro TotalCount ottiene le prime cinque righe di contenuto. In questo esempio viene usato il riferimento nell'esempio LineNumbers.txt 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

Esempio 3: Ottenere una riga di contenuto specifica da un file di testo

Questo comando ottiene un numero specifico di righe da un file e quindi visualizza solo l'ultima riga del contenuto. Il parametro TotalCount ottiene le prime 25 righe di contenuto. In questo esempio viene usato il LineNumbers.txt file a cui viene fatto riferimento nell'esempio 1.

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

This is Line 25

Il Get-Content comando viene racchiuso tra parentesi in modo che il comando venga completato prima di passare al passaggio successivo. Get-Contentrestituisce una matrice di righe, che consente di aggiungere la notazione dell'indice dopo la parentesi per recuperare un numero di riga specifico. In questo caso, l'indice [-1] specifica l'ultimo indice nella matrice restituita di 25 righe recuperate.

Esempio 4: Ottenere l'ultima riga di un file di testo

Questo comando ottiene l'ultima riga di contenuto da un file. In questo esempio viene usato il LineNumbers.txt file creato nell'esempio 1.

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

This is Line 100

In questo esempio viene usato il Get-Item cmdlet per dimostrare che è possibile inviare tramite pipe i file a Get-Content. Il parametro Tail ottiene l'ultima riga del file. Questo metodo è più veloce rispetto al recupero di tutte le righe in una variabile e all'uso della notazione dell'indice [-1] .

Esempio 5: Ottenere il contenuto di un flusso di dati alternativo

Questo esempio descrive come usare il parametro Stream per ottenere il contenuto di un flusso di dati alternativo per i file archiviati in un volume NTFS di Windows. In questo esempio viene usato il Set-Content cmdlet per creare contenuto di esempio in un file denominato 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

Il parametro Stream è un parametro dinamico del provider FileSystem. Per impostazione predefinita Get-Content , recupera solo i dati dal flusso predefinito o :$DATA . I flussi possono essere usati per archiviare dati nascosti, ad esempio attributi, impostazioni di sicurezza o altri dati. Possono anche essere archiviati nelle directory senza essere elementi figlio.

Esempio 6: Ottenere contenuto non elaborato

I comandi in questo esempio ottengono il contenuto di un file come una stringa, anziché una matrice di stringhe. Per impostazione predefinita, senza il parametro dinamico Raw , il contenuto viene restituito come matrice di stringhe delimitate da nuova riga. In questo esempio viene usato il LineNumbers.txt file a cui viene fatto riferimento nell'esempio 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.

Esempio 7: Usare filtri con Get-Content

È possibile specificare un filtro per il Get-Content cmdlet . Quando si usano filtri per qualificare il parametro Path , è necessario includere un asterisco finale (*) per indicare il contenuto del percorso.

Il comando seguente ottiene il contenuto di tutti i *.log file nella C:\Temp directory.

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

Esempio 8: Ottenere il contenuto del file come matrice di byte

In questo esempio viene illustrato come ottenere il contenuto di un file come [byte[]] singolo oggetto .

$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)

Il primo comando usa il parametro AsByteStream per ottenere il flusso di byte dal file. Il parametro Raw garantisce che i byte vengano restituiti come .[System.Byte[]] Se il parametro Raw è assente, il valore restituito è un flusso di byte, interpretato da PowerShell come [System.Object[]].

Parametri

-AsByteStream

Specifica che il contenuto deve essere letto come flusso di byte. Il parametro AsByteStream è stato introdotto in Windows PowerShell 6.0.

Si verifica un avviso quando si usa il parametro AsByteStream con il parametro Encoding . Il parametro AsByteStream ignora qualsiasi codifica e l'output viene restituito come flusso di byte.

Quando si legge e si scrive in file binari, usare il parametro AsByteStream e il valore 0 per il parametro ReadCount. Un valore ReadCount pari a 0 legge l'intero file in una singola operazione di lettura. Il valore ReadCount predefinito, 1, legge un byte in ogni operazione di lettura e converte ogni byte in un oggetto separato. Il piping dell'output a byte singolo per causare errori a Set-Content meno che non si usi il parametro AsByteStream con Set-Content.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Credential

Nota

Questo parametro non è supportato da alcun provider installato con PowerShell. Per rappresentare un altro utente o elevare le credenziali durante l'esecuzione di questo cmdlet, usare Invoke-Command.

Tipo:PSCredential
Posizione:Named
Valore predefinito:Current user
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-Delimiter

Specifica il delimitatore utilizzato Get-Content per dividere il file in oggetti durante la lettura. Il valore predefinito è \n, il carattere di fine riga. Quando si legge un file di testo, Get-Content restituisce una raccolta di oggetti stringa, ognuno dei quali termina con un carattere di fine riga. Quando si immette un delimitatore che non esiste nel file, Get-Content restituisce l'intero file come singolo oggetto non recapitato.

È possibile usare questo parametro per suddividere un file di grandi dimensioni in file più piccoli specificando un separatore di file, come delimitatore. Il delimitatore viene mantenuto (non eliminato) e diventa l'ultimo elemento in ogni sezione del file.

Delimitatore è un parametro dinamico aggiunto dal provider FileSystem al Get-Content cmdlet . Questo parametro funziona solo nelle unità di file system.

Nota

Attualmente, quando il valore del parametro Delimiter è una stringa vuota, Get-Content non restituisce nulla. Questo è un problema noto Per forzare Get-Content la restituzione dell'intero file come singola stringa non recapitata. Immettere un valore che non esiste nel file.

Tipo:String
Posizione:Named
Valore predefinito:End-of-line character
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Encoding

Specifica il tipo di codifica per il file di destinazione. Il valore predefinito è utf8NoBOM.

I valori accettabili per questo parametro sono i seguenti:

  • ascii: usa la codifica per il set di caratteri ASCII (a 7 bit).
  • ansi: usa la codifica per per la tabella codici ANSI delle impostazioni cultura correnti. Questa opzione è stata aggiunta in PowerShell 7.4.
  • bigendianunicode: codifica in formato UTF-16 usando l'ordine dei byte big-endian.
  • bigendianutf32: codifica in formato UTF-32 usando l'ordine dei byte big-endian.
  • oem: usa la codifica predefinita per i programmi MS-DOS e console.
  • unicode: codifica in formato UTF-16 usando l'ordine dei byte little-endian.
  • utf7: codifica in formato UTF-7.
  • utf8: codifica in formato UTF-8.
  • utf8BOM: codifica in formato UTF-8 con byte order mark (BOM)
  • utf8NoBOM: codifica in formato UTF-8 senza byte order mark (BOM)
  • utf32: codifica in formato UTF-32.

La codifica è un parametro dinamico aggiunto dal provider FileSystem al Get-Content cmdlet . Questo parametro è disponibile solo nelle unità del file system.

A partire da PowerShell 6.2, il parametro Encoding consente anche ID numerici di tabelle codici registrate (ad esempio ) o nomi di stringhe di tabelle codici registrate (ad esempio -Encoding 1251-Encoding "windows-1251"). Per altre informazioni, vedere la documentazione di .NET per Encoding.CodePage.

A partire da PowerShell 7.4, è possibile usare il Ansi valore per il parametro Encoding per passare l'ID numerico per la tabella codici ANSI delle impostazioni cultura correnti senza doverlo specificare manualmente.

Nota

UTF-7* non è più consigliato per l'uso. A partire da PowerShell 7.1, viene scritto un avviso se si specifica utf7 per il parametro Encoding .

Tipo:Encoding
Valori accettati:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Posizione:Named
Valore predefinito:UTF8NoBOM
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Exclude

Specifica, come matrice di stringhe, un elemento o elementi esclusi dal cmdlet nell'operazione. Il valore di questo parametro qualifica il parametro Path .

Immettere un elemento o un modello di percorso, ad esempio *.txt. I caratteri jolly sono consentiti.

Il parametro Exclude è effettivo solo quando il comando include il contenuto di un elemento, ad esempio C:\Windows\*, dove il carattere jolly specifica il contenuto della C:\Windows directory.

Tipo:String[]
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:True

-Filter

Specifica un filtro per qualificare il parametro Path . Il provider FileSystem è l'unico provider di PowerShell installato che supporta l'uso dei filtri. È possibile trovare la sintassi per il linguaggio di filtro FileSystem in about_Wildcards. I filtri sono più efficienti rispetto ad altri parametri, perché il provider li applica quando il cmdlet ottiene gli oggetti anziché filtrare gli oggetti dopo il recupero.

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:True

-Force

Force può eseguire l'override di un attributo di sola lettura o creare directory per completare un percorso di file. Il parametro Force non tenta di modificare le autorizzazioni dei file o di ignorare le restrizioni di sicurezza.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Include

Specifica, come matrice di stringhe, un elemento o elementi inclusi nel cmdlet nell'operazione. Il valore di questo parametro qualifica il parametro Path . Immettere un elemento o un modello di percorso, ad esempio "*.txt". I caratteri jolly sono consentiti. Il parametro Include è effettivo solo quando il comando include il contenuto di un elemento, ad esempio C:\Windows\*, dove il carattere jolly specifica il contenuto della C:\Windows directory.

Tipo:String[]
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:True

-LiteralPath

Specifica un percorso di una o più posizioni. Il valore di LiteralPath viene usato esattamente come viene digitato. Nessun carattere viene interpretato come carattere jolly. Se il percorso include caratteri di escape, racchiuderlo tra virgolette singole. Le virgolette singole indicano a PowerShell di non interpretare alcun carattere come sequenze di escape.

Per altre informazioni, vedere about_Quoting_Rules.

Tipo:String[]
Alias:PSPath, LP
Posizione:Named
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-Path

Specifica il percorso di un elemento in cui Get-Content ottiene il contenuto. I caratteri jolly sono consentiti. È necessario usare percorsi di elementi, non di contenitori. Ad esempio, è necessario specificare un percorso di uno o più file, non di una directory.

Tipo:String[]
Posizione:0
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:True
Accettare caratteri jolly:True

-Raw

Ignora i caratteri di nuova riga e restituisce l'intero contenuto di un file in una stringa con le righe nuove mantenute. Per impostazione predefinita, i caratteri di nuova riga in un file vengono usati come delimitatori per separare l'input in una matrice di stringhe. Questo parametro è stato introdotto in PowerShell 3.0.

Raw è un parametro dinamico aggiunto dal provider FileSystem al Get-Content cmdlet Questo parametro funziona solo nelle unità del file system.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-ReadCount

Specifica quante righe di contenuto alla volta verranno inviate nella pipeline. Il valore predefinito è 1. Un valore pari a 0 (zero) o numeri negativi invia tutto il contenuto contemporaneamente.

Questo parametro non modifica il contenuto visualizzato, ma influisce sul tempo necessario per visualizzare il contenuto. Man mano che il valore di ReadCount aumenta, aumenta il tempo necessario per restituire la prima riga, ma il tempo totale per l'operazione diminuisce. Ciò può fare una differenza percepibile in elementi di grandi dimensioni.

Tipo:Int64
Posizione:Named
Valore predefinito:1
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-Stream

Nota

Questo parametro è disponibile solo in Windows.

Ottiene il contenuto di un flusso di file NTFS alternativo specificato dal file. Immettere il nome del flusso. I caratteri jolly non sono supportati.

Stream è un parametro dinamico aggiunto dal provider FileSystem al Get-Content cmdlet . Questo parametro funziona solo nelle unità del file system nei sistemi Windows.

Questo parametro è stato introdotto in Windows PowerShell 3.0. In PowerShell 7.2 è Get-Content possibile recuperare il contenuto di flussi di dati alternativi da directory e file.

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Tail

Specifica il numero di righe dalla fine di un file o di un altro elemento. È possibile usare il nome del parametro Tail o il relativo alias, Last. Un valore di 0 non restituisce righe. I valori negativi causano un errore.

Questo parametro è stato introdotto in PowerShell 3.0.

Tipo:Int32
Alias:Last
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-TotalCount

Specifica il numero di righe dall'inizio di un file o di un altro elemento. Un valore di 0 non restituisce righe. I valori negativi causano un errore.

È possibile usare il nome del parametro TotalCount o i relativi alias, First o Head.

Tipo:Int64
Alias:First, Head
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-Wait

Fa sì che il cmdlet attenda un tempo illimitato, mantenendo aperto il file, fino a quando non viene interrotto. Durante l'attesa, Get-Content controlla il file una volta al secondo e restituisce nuove righe, se presenti. Se usato con il parametro TotalCount , Get-Content attende fino a quando il numero specificato di righe non è disponibile nel file specificato. Ad esempio, se si specifica un TotaleCount pari a 10 e il file dispone già di 10 o più righe, Get-Content restituisce le 10 righe e le uscite. Se il file ha meno di 10 righe, Get-Content restituisce ogni riga quando arriva, ma attende fino a quando non arriva la decima riga prima di uscire.

È possibile interrompere l'attesa premendo CTRL+C. L'eliminazione del file causa un errore non irreversibile che interrompe anche l'attesa.

Wait è un parametro dinamico aggiunto dal provider FileSystem al Get-Content cmdlet . Questo parametro funziona solo nelle unità di file system. L'attesa non può essere combinata con Raw.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

Input

Int64

È possibile inviare tramite pipe il conteggio di lettura o il conteggio totale a questo cmdlet.

String[]

È possibile inviare tramite pipe i percorsi a questo cmdlet.

PSCredential

È possibile inviare tramite pipe le credenziali a questo cmdlet.

Output

Byte

Quando si usa il parametro AsByteStream , questo cmdlet restituisce il contenuto come byte.

String

Per impostazione predefinita, questo cmdlet restituisce il contenuto come matrice di stringhe, una per riga. Quando si usa il parametro Raw , restituisce una singola stringa contenente ogni riga nel file.

Note

PowerShell include gli alias seguenti per Get-Content:

  • Tutte le piattaforme:
    • gc
    • type
  • Windows:
    • cat

Il Get-Content cmdlet è progettato per lavorare con i dati esposti da qualsiasi provider. Per ottenere i provider nella sessione, usare il Get-PSProvider cmdlet . Per altre informazioni, vedere about_Providers.