Come importare file CSV in un array in PowerShell

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

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:

leggi file csv in array in powershell - output 1

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:

leggere file csv in array in powershell - output 2

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:

leggi file csv in array in powershell - output 3

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:

leggere file csv in array in powershell - output 4

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:

leggi file csv in array in powershell - output 5

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:

leggi file csv in array in powershell - output 6

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à.

Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Articolo correlato - PowerShell Array

Articolo correlato - PowerShell CSV