Come importare file CSV in un array in PowerShell
- Il file di valori separati da virgole
-
Usa il cmdlet
Import-CSV
per importare file CSV in un array in PowerShell -
Usa i cmdlet
Get-Content
eConvertFrom-Csv
per importare file CSV in un array in PowerShell -
Usa la classe
System.IO.File
e il cmdletConvertFrom-Csv
per importare file CSV in un array in PowerShell - Conclusione

I file CSV (Comma-Separated Values) servono come un formato di dati fondamentale, racchiudendo informazioni in una struttura tabellare con campi separati da virgole. Anche se comunemente associati a software per fogli di calcolo, la loro natura semplice ma versatile trova applicazione su varie piattaforme, incluso PowerShell.
Nello scripting di PowerShell, leggere e elaborare efficacemente i dati CSV è fondamentale per l’automazione e le attività di manipolazione dei dati. Questo articolo esplora tre metodi—Import-CSV
, Get-Content
cmdlets e la classe System.IO.File
con il cmdlet ConvertFrom-Csv
—per importare file CSV in array, offrendo approfondimenti sul loro utilizzo, vantaggi e scenari di applicazione.
Il file di valori separati da virgole
Un file CSV (Comma-Separated Values) contiene dati o insiemi separati da virgole. Questo consente ai dati di essere salvati in un formato tabellare.
Gli utenti possono utilizzare i file CSV con la maggior parte dei programmi per fogli di calcolo, come Microsoft Excel o Google Sheets. Tuttavia, quando lo apriamo in software che non è progettato per formati tabellari, i dati saranno separati da virgole, cosa che PowerShell può utilizzare per separare i valori in array.
Ad esempio, qui di seguito è un formato CSV grezzo con due colonne.
file users.csv
:
Name,Salary
John,1000
Paul,2000
Mary,1500
Matt,3000
Usa il cmdlet Import-CSV
per importare file CSV in un array in PowerShell
Il comando Import-CSV
in Windows PowerShell crea oggetti personalizzati simili a tabelle dagli elementi presentati nel file CSV sopra.
Nello script di Windows PowerShell che segue, utilizzeremo il comando Import-CSV
per assegnare i dati del file CSV a una variabile di tipo array di Windows PowerShell.
$users = Import-Csv path\users.csv
$users
Iniziamo utilizzando il cmdlet Import-Csv
per leggere i dati da un file CSV situato in path\users.csv
. Questo cmdlet legge il contenuto del file CSV e lo converte in un oggetto PowerShell.
Assegniamo quindi i dati CSV importati alla variabile $users
. Questa variabile ora contiene il contenuto del file CSV come un array di oggetti, con ogni oggetto che rappresenta una riga del file CSV.
Una volta eseguito, possiamo vedere i valori del file CSV convertiti in un formato di lista chiamato un oggetto ArrayList
.
Output:
Accedi agli elementi dopo aver importato file CSV in un array in PowerShell
Quando importiamo un file CSV utilizzando Import-Csv
in PowerShell, ogni riga del file CSV è rappresentata come un oggetto, e l’intero dato CSV è memorizzato come un array di questi oggetti. Per accedere a righe o elementi individuali all’interno dei dati CSV, utilizziamo l’indicizzazione degli array.
$users = Import-Csv path\users.csv
$users[0]
Iniziamo importando un file CSV denominato users.csv
situato nel percorso specificato. Utilizziamo il cmdlet Import-Csv
a questo scopo.
Questo cmdlet legge il contenuto del file CSV e lo converte in un oggetto PowerShell.
Dopo aver importato il file CSV, vogliamo accedere alla prima riga dei dati CSV. Riusciamo a farlo utilizzando l’indicizzazione degli array.
In PowerShell, l’indicizzazione degli array inizia da 0, quindi $users[0]
si riferisce al primo elemento (o riga) nell’array $users
.
Output:
Possiamo interrogare la proprietà di un elemento particolare dall’array di Windows PowerShell trattando il nome della colonna come un nome di proprietà, come nell’esempio qui sotto.
$users = Import-Csv path/users.csv
$users[0].Name
Dopo aver importato il file CSV e memorizzato i suoi contenuti nella variabile $users
, procediamo ad accedere a una proprietà specifica della prima riga dei dati CSV. In questo caso, vogliamo recuperare il valore della proprietà Name
dalla prima riga.
Specificando $users[0].Name
, stiamo accedendo alla proprietà Name
dell’oggetto che rappresenta la prima riga dei dati CSV. Questo ci consente di recuperare il valore associato alla colonna Name
nel file CSV per la prima riga.
Output:
Possiamo contare il numero di elementi in un array utilizzando la proprietà Count
qui sotto.
$users = Import-Csv path/users.csv
$users.Count
Dopo aver importato il file CSV e memorizzato i suoi contenuti nella variabile $users
, vogliamo determinare il numero di elementi (righe) nell’array.
Utilizzando $users.Count
, stiamo accedendo alla proprietà Count
dell’array memorizzato nella variabile $users
. Questa proprietà restituisce il numero di elementi (righe) nell’array.
Output:
Usa i cmdlet Get-Content
e ConvertFrom-Csv
per importare file CSV in un array in PowerShell
Un approccio semplice per compiere questo compito consiste nell’utilizzare i cmdlet Get-Content
e ConvertFrom-Csv
. Questo metodo ci consente di leggere il contenuto di un file CSV come testo utilizzando Get-Content
e quindi convertirlo in oggetti PowerShell utilizzando ConvertFrom-Csv
, creando così un array di oggetti che rappresentano ogni riga dei dati CSV.
$content = Get-Content -Path "C:\path\data.csv"
$array = $content | ConvertFrom-Csv
$array
Iniziamo utilizzando Get-Content
per leggere il contenuto del file CSV situato nel percorso specificato e memorizzarlo nella variabile $content
.
Successivamente, passiamo il contenuto del file CSV memorizzato in $content
a ConvertFrom-Csv
. Questo cmdlet converte il testo CSV in oggetti PowerShell e li memorizza nella variabile $array
.
Una volta eseguito, possiamo vedere i valori del file CSV convertiti in un formato di lista chiamato un oggetto ArrayList
.
Output:
Usa la classe System.IO.File
e il cmdlet ConvertFrom-Csv
per importare file CSV in un array in PowerShell
La classe System.IO.File
consente di leggere i contenuti di un file CSV, che vengono poi trasformati in oggetti PowerShell utilizzando il cmdlet ConvertFrom-Csv
. Questo metodo non solo fornisce flessibilità, ma garantisce anche facilità d’uso, consentendo agli utenti di gestire senza problemi i dati CSV all’interno dei loro script PowerShell.
$content = [System.IO.File]::ReadAllText("C:\path\data.csv")
$array = $content | ConvertFrom-Csv
$array
Utilizziamo [System.IO.File]::ReadAllText
per leggere il contenuto del file CSV situato nel percorso specificato e memorizzarlo nella variabile $content
.
Successivamente, passiamo il contenuto del file CSV memorizzato in $content
a ConvertFrom-Csv
. Questo cmdlet converte il testo CSV in oggetti PowerShell e li memorizza nella variabile $array
.
Una volta eseguito, possiamo vedere i valori del file CSV convertiti in un formato di lista chiamato un oggetto ArrayList
.
Output:
Conclusione
Nello scripting di PowerShell, gestire i dati CSV senza intoppi è imperativo per un’efficace automazione e elaborazione dei dati. Sfruttando i cmdlet Import-CSV
, Get-Content
o la classe System.IO.File
con il cmdlet ConvertFrom-Csv
, gli utenti possono leggere efficacemente i file CSV in array, consentendo loro di manipolare i dati con facilità e flessibilità.
Che si tratti di estrarre informazioni da grandi set di dati o automatizzare compiti ripetitivi, questi metodi forniscono strumenti potenti per gli sviluppatori di PowerShell. Con una chiara comprensione di queste tecniche, gli utenti possono sfruttare il potere dei dati CSV all’interno dei loro script, snellendo i flussi di lavoro e migliorando la produttività.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedInArticolo correlato - PowerShell Array
- Array di Byte in PowerShell
- Array di stringhe in PowerShell
- Array multidimensionali di PowerShell
- Come aggiungere oggetti a un array di oggetti in PowerShell
- Come convertire un oggetto array in una stringa in PowerShell
- Come creare un array vuoto di array in PowerShell