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-Content
restituisce 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
È 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.
È possibile inviare tramite pipe le credenziali a questo cmdlet.
Output
Quando si usa il parametro AsByteStream , questo cmdlet restituisce il contenuto come byte.
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.