Condividi tramite


Get-Content

Ottiene il contenuto dell'elemento nel percorso specificato.

Sintassi

Get-Content
   [-Path] <string[]>
   [-ReadCount <long>]
   [-TotalCount <long>]
   [-Tail <int>]
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [-UseTransaction]
   [-Delimiter <string>]
   [-Wait]
   [-Raw]
   [-Encoding <FileSystemCmdletProviderEncoding>]
   [-Stream <string>]
   [<CommonParameters>]
Get-Content
   -LiteralPath <string[]>
   [-ReadCount <long>]
   [-TotalCount <long>]
   [-Tail <int>]
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [-UseTransaction]
   [-Delimiter <string>]
   [-Wait]
   [-Raw]
   [-Encoding <FileSystemCmdletProviderEncoding>]
   [-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 dei quali 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

Questo esempio ottiene il contenuto di un file nella directory corrente. Il LineNumbers.txt file contiene 100 righe nel formato, ovvero 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 Get-Content restituisce

Questo comando ottiene le prime cinque righe di un file. Il parametro TotalCount viene usato per ottenere le prime cinque righe di contenuto. In questo esempio viene usato il file creato 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 file creato nell'esempio LineNumbers.txt 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 la prima riga e l'ultima riga di contenuto da un file. In questo esempio viene usato il file creato nell'esempio LineNumbers.txt 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 nel Get-Content parametro . Il parametro Tail ottiene l'ultima riga del file. Questo metodo è più veloce rispetto al recupero di tutte le righe 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 il Set-Content cmdlet viene usato 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, or $DATA stream.
Get-Content -Path .\Stream.txt -Stream $DATA

This is the content of the Stream.txt file

# Use the Stream parameter of Add-Content to create a new Stream containing sample content.
Add-Content -Path .\Stream.txt -Stream NewStream -Value 'Added a stream named NewStream to Stream.txt'
# 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 primario o $DATA . I flussi possono essere usati per archiviare dati nascosti, ad esempio attributi, impostazioni di sicurezza o altri dati.

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 nuove righe. In questo esempio viene usato il file creato nell'esempio LineNumbers.txt 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 -Encoding Byte -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 Encoding 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

-Credential

Nota

Questo parametro non è supportato da alcun provider installato con PowerShell. Per rappresentare un altro utente o elevare le credenziali quando si esegue questo cmdlet, usare Invoke-Command.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters: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 preservato (non rimosso) e diventa l'ultimo elemento di 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.

Type:String
Position:Named
Default value:End-of-line character
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

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

I valori accettabili per questo parametro sono i seguenti:

  • ASCII Usa il set di caratteri ASCII (a 7 bit).
  • BigEndianUnicode Usa UTF-16 con l'ordine dei byte big-endian.
  • BigEndianUTF32 Usa UTF-32 con l'ordine dei byte big-endian.
  • Byte Codifica un set di caratteri in una sequenza di byte.
  • Predefinito Usa la codifica corrispondente alla tabella codici attiva del sistema (in genere ANSI).
  • OEM Usa la codifica corrispondente alla tabella codici OEM corrente del sistema.
  • Stringa Uguale a Unicode.
  • Unicode Usa UTF-16 con l'ordine dei byte little-endian.
  • Sconosciuto Uguale a Unicode.
  • UTF7 Usa UTF-7.
  • UTF8 Usa UTF-8.
  • UTF32 Usa UTF-32 con l'ordine dei byte little-endian.

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

Durante la lettura e la scrittura in file binari, usare il valore Byte per il parametro dinamico Encoding e il valore 0 per il parametro ReadCount . Un valore ReadCount pari a 0 legge l'intero file in una singola operazione di lettura e lo converte in un singolo oggetto (PSObject). Il valore ReadCount predefinito, 1, legge un byte in ogni operazione di lettura e converte ogni byte in un oggetto separato, causando errori quando si usa il Set-Content cmdlet per scrivere i byte in un file.

Type:FileSystemCmdletProviderEncoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, Byte, Default, OEM, String, Unicode, Unknown, UTF7, UTF8, UTF32
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters: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 del percorso, ad esempio *.txt. I caratteri jolly sono consentiti.

Il parametro Exclude è efficace 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.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 di altri parametri, perché il provider li applica quando il cmdlet ottiene gli oggetti invece di filtrare gli oggetti di PowerShell dopo il recupero.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Force

Forza eseguirà l'override di un attributo di sola lettura o creerà directory per completare un percorso di file. Il parametro Force non tenta di modificare le autorizzazioni di file o di eseguire l'override delle restrizioni di sicurezza.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Include

Specifica, come matrice di stringhe, un elemento o un elemento che questo cmdlet include nell'operazione. Il valore di questo parametro qualifica il parametro Path. Immettere un elemento o un modello del percorso, ad esempio "*.txt". I caratteri jolly sono consentiti. Il parametro Include è efficace 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.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 i caratteri come sequenze di escape.

Per altre informazioni, vedere about_Quoting_Rules.

Type:String[]
Aliases:PSPath
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-Raw

Ignora i caratteri di nuova riga e restituisce l'intero contenuto di un file in una stringa con le nuove righe 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 che il provider FileSystem aggiunge al Get-Content cmdlet Questo parametro funziona solo nelle unità del file system.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ReadCount

Specifica quante righe di contenuto alla volta verranno inviate nella pipeline. Il valore predefinito è 1. Un valore pari a 0 (zero) invia tutto il contenuto in una sola volta.

Questo parametro non modifica il contenuto visualizzato, ma modifica il tempo necessario per visualizzarlo. Con l'aumento del valore di ReadCount, il tempo necessario per restituire la prima riga aumenta, ma si riduce il tempo totale per l'esecuzione dell'operazione. Ciò può fare una differenza percepibile in articoli di grandi dimensioni.

Type:Int64
Position:Named
Default value:1
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Stream

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 al cmdlet dal Get-Content provider FileSystem. Questo parametro funziona solo nelle unità file system nei sistemi Windows. Questo parametro è stato introdotto in Windows PowerShell 3.0.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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. Questo parametro è stato introdotto in PowerShell 3.0.

Type:Int32
Aliases:Last
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-TotalCount

Specifica il numero di righe dall'inizio di un file o di un altro elemento. Il valore predefinito è -1 (tutte le righe).

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

Type:Int64
Aliases:First, Head
Position:Named
Default value:-1
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-UseTransaction

Include il comando nella transazione attiva. Questo parametro è valido solo quando è in corso una transazione. Per altre informazioni, vedere about_Transactions.

Type:SwitchParameter
Aliases:usetx
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Wait

Mantiene aperto il file dopo che tutte le righe esistenti sono state restituite. Durante l'attesa, Get-Content controlla il file una volta al secondo e restituisce nuove righe se presenti. È possibile interrompere Wait premendo CTRL+C. L'attesa termina anche se il file viene eliminato, nel qual caso viene segnalato un errore non terminante.

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

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Input

System.Int64, System.String[], System.Management.Automation.PSCredential

È possibile inviare tramite pipe il conteggio di lettura, il numero totale, i percorsi o le credenziali a Get-Content.

Output

System.Byte, System.String

Get-Content restituisce stringhe o byte. Il tipo di output dipende dal tipo di contenuto specificato come input.

Note

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.