Con l’automazione, leggere i dati da un file di testo è uno scenario comune. La maggior parte dei linguaggi di programmazione ha almeno un modo per leggere i file di testo, e PowerShell non fa eccezione. Il cmdlet Get-Content
di PowerShell, un equivalente della coda di PowerShell, legge il contenuto di un file di testo e importa i dati in una sessione di PowerShell.
Il cmdlet Get-Content
di PowerShell è uno strumento indispensabile quando è necessario utilizzare file di testo come input per lo script. Forse lo script di PowerShell deve leggere un elenco di computer da monitorare o importare un modello di email da inviare agli utenti. PowerShell Get-Content
supporta facilmente questi scenari!
E se volessimo seguire un file di registro in tempo reale? Sì, anche il cmdlet Get-Content
di PowerShell può farlo! Continua a leggere questo articolo e imparerai come utilizzare il cmdlet Get-Content
per leggere i file di testo in PowerShell.
Prerequisiti
Se sei interessato a seguire gli esempi in questo tutorial, avrai bisogno dei seguenti requisiti.
- Avrai bisogno di un computer che esegua Windows 10. Questo tutorial utilizza Windows 10 versione 20H2. Ma non preoccuparti, andrà bene anche con la versione di Windows 10 che hai.
- Dovresti avere almeno Windows PowerShell 5.1 o PowerShell 7.1 installato sul tuo computer. Qui viene utilizzato PowerShell 7.1, ma funzionerà anche qualsiasi altra versione!
- Scriverai e testerai comandi, quindi avrai bisogno di un editor di codice. Gli editor consigliati sono Windows PowerShell ISE, integrato in Windows, e Visual Studio Code (VSCode). Questo articolo utilizza VSCode.
- Ti sarà utile anche creare una cartella di lavoro sul tuo computer. La cartella di lavoro può essere ovunque tu desideri. Tuttavia, noterai che gli esempi in questo tutorial risiedono nella cartella C:\demo.
- Per iniziare, hai bisogno di un po’ di contenuto! Crea un file, nella tua cartella di lavoro, con il nome fruits.txt che includa dieci frutti diversi per semplicità. Utilizzerai questo file di testo in tutti gli esempi.
Non sai quale versione di PowerShell hai? Visita l’articolo Come Controllare la Tua Versione di PowerShell (Tutti i Modi!).
Lettura di un File di Testo e Restituzione del Risultato come Array di Stringhe
Il cmdlet Get-Content
legge il contenuto da un file e, per impostazione predefinita, restituisce ogni riga di un file di testo come un oggetto stringa. Di conseguenza, la raccolta di oggetti PowerShell diventa un array di oggetti stringa.
Il codice seguente legge il contenuto del file fruits.txt e visualizza il risultato sulla console di PowerShell come mostrato nella schermata sottostante.

Get-Content
.Get-Content
legge e memorizza il contenuto come un array, ma come puoi esserne certo? Prima, salva il contenuto in un oggetto PowerShell che puoi poi esaminare per determinare il tipo.
Guardando la schermata sottostante, la variabile $fruits
è un array che contiene dieci oggetti. Ogni oggetto rappresenta una singola riga di testo.

Tornando a una riga specifica da un file di testo
Nell’esempio precedente, hai appreso che il risultato predefinito di Get-Content
è un array o una raccolta di oggetti. Ogni elemento in una raccolta corrisponde a un numero di indice, e gli indici di PowerShell iniziano tipicamente da zero.
Nella schermata sottostante si vede che ci sono dieci elementi nella stringa array. L’array ha indicizzato i dieci elementi da zero a nove.

Per visualizzare solo la quinta riga di contenuto, è necessario specificare il numero di indice 4
, racchiuso tra parentesi quadre (noto come notazione array).
Potresti notare che il comando
Get-Content
è racchiuso tra parentesi. Questa notazione dice a PowerShell di eseguire prima il comando racchiuso tra parentesi prima di altre operazioni.
Nella schermata sottostante, vedrai che l’unico risultato restituito è lamponi
, che è l’elemento all’indice 4
e corrisponde alla quinta riga nel file di testo.

Get-Content
results.E se avessi bisogno di ottenere il contenuto dell’ultima riga? Fortunatamente, non è necessario conoscere il numero totale di righe. Invece, utilizza [-1]
come indice, e Get-Content
visualizzerà solo l’ultima riga del file.
Limitare il numero di risultati principali restituiti da Get-Content
Usa il parametro TotalCount
di Get-Content
per recuperare un numero specificato di righe da un file di testo. Il parametro TotalCount
accetta un valore long che significa un valore massimo di 9.223.372.036.854.775.807.
Per esempio, il comando seguente legge il contenuto e limita il risultato a tre elementi.
Come ci si aspetterebbe, il risultato sotto mostra solo le prime tre righe dall’inizio del file di testo.

Get-Content
command and the TotalCount
parameter.Usa il parametro PowerShell Tail per restituire risultati dalla fine di un file
Nell’esempio precedente, hai usato il cmdlet PowerShell Get-Content
per leggere un file di testo e limitare i risultati principali. È anche possibile ottenere l’opposto con PowerShell Get-Content
. Usa il parametro PowerShell Tail
per leggere un numero specificato di righe dalla fine di un file.
Il codice di esempio sotto legge il file di testo e visualizza il contenuto delle ultime quattro righe.
Dopo aver eseguito il comando PowerShell tail
, l’output atteso sarà limitato alle ultime quattro righe di contenuto, come mostrato nell’immagine sotto.

Get-Content
Tail
parameter.Il parametro Tail
viene spesso utilizzato insieme al parametro Wait
. Utilizzando il parametro Wait
, il file rimane aperto e controlla per nuovo contenuto una volta ogni secondo. La dimostrazione sotto mostra i parametri Tail
e Wait
in azione. Per uscire da Wait
, utilizza la combinazione di tasti CTRL+C
.

wait
and Tail
parameters with Get-Content
.Restituendo i risultati come una singola stringa
Potresti aver notato negli esempi precedenti che hai gestito gli array di stringhe come output di PowerShell Get-Content
. E come hai imparato finora, la natura degli array ti consente di operare sul contenuto un elemento alla volta.
Gli array funzionano spesso bene ma possono rendere più difficile la sostituzione delle stringhe. Il parametro Raw
di Get-Content
legge l’intero contenuto di un file in un singolo oggetto stringa. Sebbene il codice qui sotto sia lo stesso usato nel primo esempio, il parametro Raw
memorizza il contenuto del file come una singola stringa.
La schermata sottostante mostra che l’aggiunta del parametro Raw
a Get-Content
fa sì che il contenuto venga trattato come una singola stringa e non come un array di oggetti.

Raw
parameter of Get-Content
reads the file content as a single string object.Una volta che hai il contenuto di un file in una singola stringa usando il parametro Raw
, cosa puoi farci? Forse devi cercare e sostituire una stringa all’interno di quel file. Nell’esempio seguente, Get-Content
legge il contenuto di un file come una singola stringa. Poi, utilizzando l’operatore replace
, sostituisci una parola specifica con un’altra.
Correlato: Ricerca e Sostituzione di Stringhe

replace
operator.Leggi solo il contenuto dai file corrispondenti a un filtro
Hai una cartella piena di file ma devi leggere solo il contenuto di alcuni selezionati? Con PowerShell Get-Content
, non è necessario filtrare i file separatamente prima di leggerne i contenuti. Il parametro Filter
di Get-Content
limita quali file il cmdlet legge.
Per dimostrare la lettura del contenuto solo di alcuni file selezionati, prima, crea un paio di file da leggere. Come mostrato di seguito, crea i file nella tua cartella di lavoro usando Add-Content
.

.log
files using Add-Content
.Con i tuoi file di test creati, utilizza i parametri Filter
e Path
per leggere solo i file .log
nella directory principale. L’asterisco utilizzato nella definizione del filtro indica a Get-Content
di leggere qualsiasi file con estensione .log
. L’asterisco finale del parametro del percorso limita la lettura dei file solo alla directory principale.
Come mostrato nell’output sottostante, viene visualizzato solo il contenuto dei file .log
.

Filter
parameter with PowerShell Get-Content
to limit the read files.Correlato: Get-ChildItem: Elenca file, Registro, Certificati e altro come uno
Leggendo l’Alternate Data Stream di un file
Fino ad ora, hai lavorato esclusivamente con file di testo, ma Get-Content
può leggere dati dall’Alternate Data Stream (ADS) di un file. Sentiti libero di approfondire gli studi sui flussi, ma puoi pensare a un flusso come a un altro attributo di dati memorizzato insieme ai tipici contenuti di un file.
Gli alternate data streams sono una caratteristica del sistema di file NTFS di Windows, quindi ciò non si applica a
Get-Content
quando usato con sistemi operativi non Windows.
Puoi visualizzare gli alternate data streams eseguendo Get-Item
con il parametro Stream
. Quando si fa riferimento a un file usando il parametro Stream
, Get-Item
restituisce una proprietà chiamata Stream
, come mostrato di seguito. Questo stream di contenuto predefinito del file è rappresentato da :$DATA
.
Per mostrare lo stream predefinito :$DATA
, utilizza il cmdlet Get-Item
per visualizzare tutti gli stream disponibili nel file fruits.txt. Come mostrato di seguito, Get-Item
visualizza un singolo stream.

Get-Item
.Il parametro Stream
di Get-Content
legge esplicitamente il contenuto dello stream predefinito :$DATA
, come mostrato di seguito. Il contenuto restituito è lo stesso dell’output predefinito di Get-Content
, poiché lo stream :$DATA
viene letto per impostazione predefinita.

:$DATA
stream using Get-Content
.Per dimostrare il recupero di uno stream dati alternativo utilizzando Get-Content
, modifica un file utilizzando Add-Content
per aggiungere il nuovo stream. Utilizza Get-Item
per mostrare il nuovo stream insieme allo stream predefinito :$DATA
, come visto nell’esempio qui sotto.

Poiché solo lo stream :$DATA
viene letto per impostazione predefinita, utilizza il parametro Stream
di Get-Content
per recuperare il nuovo contenuto dello stream Segreto
. Come mostrato di seguito, il contenuto dello stream Segreto
viene visualizzato al posto del contenuto predefinito del file.

Get-Content
to read the Secret
alternate data stream content.Prossimi Passaggi Con PowerShell Get-Content
In questo articolo, hai imparato molti modi per utilizzare Get-Content
per leggere e manipolare contenuti. Hai persino appreso che Get-Content
è abbastanza flessibile da leggere contenuti da stream di dati alternativi!
Con ciò che hai imparato in questo articolo, quali altri modi puoi utilizzare Get-Content
nel tuo lavoro? Forse puoi utilizzare Get-Content
per determinare se un file di backup è obsoleto e attivare una chiamata automatica per eseguire un lavoro di backup?
Source:
https://adamtheautomator.com/powershell-get-content/