Command-separated Value
o CSV
file sono un tipo molto popolare di file di testo che vengono utilizzati per scopi diversi. Ciò che rende CSV speciale è la capacità di memorizzare dati strutturati delimitando i valori o le colonne con la virgola. I file CSV sono compatibili con i file Excel per importare ed esportare.
Esportazione in file CSV delimitato da virgola
Iniziamo con un semplice esempio. Il comando Get-Process
è usato per elencare i processi in esecuzione con diverse informazioni come Handle, NPM, CPU, ID, ProcessName ecc. Possiamo usare il comando Export-CSV per memorizzare queste informazioni di processo delimitate dal comando.
PS> Get-Process
Ora possiamo mettere queste informazioni sui processi in corso in un file CSV reindirizzando l’output di Get-Process. Forniremo il nome del file con l’opzione -Path
. Il nome del file sarà ProcessList.csv.
PS> Get-Process | Export-CSV -Path ProcessList.csv
In alternativa possiamo fornire diverse directory con l’opzione -Path. Nel seguente comando metteremo il file ProcessList.csv nella C:\Users\İsmail Baydan\Desktop
.
PS> Get-Content 'C:\Users\İsmail Baydan\Desktop\ProcessList.csv'
Set Delimiter For CSV File
I delimitatori sono una parte importante dei file CSV. Per default, i file CSV usano il comando come delimitatore. Ma possiamo cambiare il delimitatore come vogliamo. Useremo l’opzione -Delimeter per impostare un diverso carattere delimitatore. Nel seguente esempio, imposteremo il segno uguale = come delimitatore. Mettere il delimitatore all’interno dei doppi apici è un ottimo modo per evitare errori.
PS> Get-Process | Export-CSV -Delimiter "=" -Path ProcessList.csv
Esporta in un file CSV delimitato dal punto e virgola
La virgola è il delimitatore standard per i file CSV. Ma possiamo usare diversi delimitatori per separare le colonne. In alcuni casi, una virgola può essere usata all’interno del contenuto che vogliamo mettere nel file CSV. Questo bloccherà il file CSV perché il delimitatore e il contenuto saranno gli stessi e sarà un errore analizzare il contenuto con il delimitatore. Quindi una buona alternativa al delimitatore di comando è il punto e virgola che è raramente usato nel contenuto del file CSV. Nell’esempio seguente, imposteremo il punto e virgola come delimitatore.
PS> Get-Process | Export-CSV -Delimiter ";" -Path ProcessList.csv
Selezionare le proprietà per scrivere il file CSV
Finora abbiamo lavorato con il comando Get-Process che elencherà tutte le proprietà dei processi attualmente in esecuzione. In alcuni casi non abbiamo bisogno di mettere tutte le proprietà nel file CSV. Possiamo selezionare quali proprietà possono essere messe nel file CSV. Useremo il comando Select-Object
e la sua opzione -Property
come segue.
PS> Get-Process | Select-Object -Property ProcessName,Id | Export-CSV -Path ProcessList.csv
Append To The Existing CSV File
Un altro caso di utilizzo del comando Export-CSV è l’aggiunta di un nuovo contenuto CSV nel contenuto CSV esistente. Possiamo usare l’opzione -Append
che aggiungerà un nuovo contenuto CSV nel file esistente.
PS> Get-Process | Export-CSV -Delimiter -Append -Path ProcessList.csv
Non sovrascrivere il file CSV esistente
Per default il comando Export-CSV sovrascriverà il file esistente senza alcun avviso. Possiamo prevenire questa azione con l’opzione -NoClobber
che non sovrascriverà il file esistente e stamperà un errore per il file già esistente.
PS> Get-Process | Export-CSV -NoClobber -Path ProcessList.csv
Sovrascrivere file di sola letturaFile di sola lettura
Per default i file di sola lettura possono essere modificati, aggiunti per impostazione predefinita. Ma il comando Export-CSV può cambiare l’attributo di sola lettura per la modifica e poi tornare a sola lettura. Forzeremo l’operazione di scrittura con l’opzione -Force
come sotto.
PS> Get-Process | Export-CSV -Append -Force -Path ProcessList.csv
Imposta la codifica del file CSV
Siccome il file CSV è un file di testo ha un’opzione di codifica. Per impostazione predefinita, UTF-8 è la codifica predefinita per i file di testo e CSV. Ma in alcuni casi, potremmo aver bisogno di cambiare la codifica di default e impostare una codifica specifica. Possiamo usare l’opzione -Encoding e fornire un nome di codifica come ASCII. Nel seguente esempio, imposteremo la codifica del file CSV come ASCII.
PS> Get-Process | Export-CSV -Encoding ASCII -Path ProcessList.csv
Di seguito sono riportati i formati di codifica popolari e disponibili che possono essere utilizzati con Export-CSV.
- ASCII
- BigEndianUnicode
- OEM
- Unicode
- UTF7
- UTF8
- UTF8BOM
- UTF8NoBOM
- UTF32