Il termine CSV ha anche altri significati, ad esempio "valori separati dal carattere", "file delimitati da virgola" ecc.
In questa guida, dimostreremo come esportare i dati in CSV in PowerShell.
La struttura del file CSV
Il formato CSV segue una struttura molto semplice. Qualsiasi file CSV avrà ".CSV ”come estensione del file. Qui, ho generato un file CSV di esempio contenente
$ cat campione.CSV
Come possiamo vedere, ogni riga contiene diversi valori separati dalle virgole. Non c'è limite a quante voci può contenere un file CSV.
La semplicità della struttura è la caratteristica chiave. Il formato CSV è progettato in modo da poter essere facilmente utilizzato per esportare i dati in altri programmi. Il risultato è anche leggibile dall'uomo e può essere visualizzato utilizzando qualsiasi editor di testo. App Office come MS Excel, Calc, ecc., supportare anche CSV per impostazione predefinita.
Esportazione in CSV da PowerShell
PowerShell è una potente shell e un linguaggio di scripting. Supporta numerose funzionalità di base e avanzate, tra cui l'esportazione di vari dati in formato CSV.
Simile a qualsiasi altra shell, PowerShell ha un proprio set di comandi, chiamati cmdlet. Per esportare in CSV, PowerShell viene fornito con un cmdlet dedicato Export-CSV. Prende un oggetto come input e lo esporta in un file CSV.
A causa della struttura semplice, potrebbe anche essere raggiunto usando il SET-CONTENT cmdlet. Tuttavia, richiede di definire manualmente la struttura CSV. Usando Export-CSV riduce in modo significativo il carico di lavoro.
La pagina di aiuto di Export-CSV mostrerà tutti i comandi supportati.
$ AIUTO ESPORT-CSV
Un esempio pratico sarebbe esportare l'elenco dei processi in esecuzione. Può essere utile in alcuni scenari di debug/monitoraggio. Per ottenere l'elenco dei processi, useremo il cmdlet Get-Process.
$ Get-process
Ora, tubi l'uscita a Export-CSV.
$ GET-PROCESS | Export -CSV -Path/Home/Viktor/Desktop/Processi.CSV
Qui, il flag "-path" descrive la posizione per salvare il file CSV generato. Per controllare il contenuto del file CSV, utilizzare il cmdlet Ottenere il contenuto.
$ Get-content/home/viktor/desktop/processi.CSV
Delimitatore personalizzato
Per qualsiasi file CSV, è standard utilizzare la virgola (,) come delimitatore. Tuttavia, potresti voler cambiare il delimitatore in qualcosa di diverso da una virgola in determinate situazioni. Il cmdlet di esportazione-CSV supporta l'impostazione di un delimitatore personalizzato per il file CSV. Può essere qualsiasi personaggio.
Nel seguente esempio, useremo un punto e virgola come delimitatore.
$ GET-PROCESS | Export -CSV -NotypeInformation -delimiter ";" -Path/Home/Viktor/Desktop/Processi.CSV
Controlliamo l'output del comando.
$ Get-content/home/viktor/desktop/processi.CSV
Aggiunta al file CSV esistente
IL Export-CSV CMDLET supporta l'aggiunta di contenuti ai file CSV esistenti. Può aiutare a compilare i dati in un singolo database.
Per aggiungere, aggiungi il flag "-Append". Utilizzare la posizione del file CSV esistente come valore per "-path".
$ GET-PROCESS | Export -CSV -Append -Path/Home/Viktor/Desktop/Processi.CSV
Selezione delle proprietà da scrivere su CSV
Diamo una rapida occhiata all'output di Get-Process First.
$ Get-process
Qui, ogni singola colonna mostra un certo tipo di informazioni sui processi attualmente in esecuzione. Ciascuna delle colonne rappresenta una proprietà del processo associato. Finora abbiamo lavorato con tutte le proprietà dei processi (trasferendoli in un file CSV). Tuttavia, non tutte le proprietà sono necessarie per ogni singola situazione.
Possiamo aggiungere un filtro intermedio per ottenere solo alcune proprietà selezionate. Per farlo, prenderemo l'aiuto di un altro cmdlet Seleziona Object.
Esporteremo solo il nome del processo (ProcessName) e l'ID (ID) nel seguente esempio.
$ GET-PROCESS | Select -Object -Property ProcessName, ID | Export -CSV -NotypeInformation -Path/Home/Viktor/Desktop/Processi.CSV
$ Get-content/home/viktor/desktop/processi.CSV
Nessuna sovrascrittura
Se non si aggiunge al file esistente, Export-CSV sovrascriverà il file esistente per impostazione predefinita. In molte situazioni, ciò può causare delezione ingiustificata di tronchi importanti. Per evitare tali incidenti, possiamo dire all'Export-CSV di non sovrascrivere un file esistente per impostazione predefinita.
Per fare ciò, aggiungi la bandiera "-noclobber".
$ GET-PROCESS | Export -CSV -noclobber -path/home/viktor/desktop/processi.CSV
Come puoi vedere, ora lancia un errore menzionando che il file esiste già.
Sovrascrittura di file di sola lettura
Per impostazione predefinita, un file di sola lettura non consente la modifica. Tuttavia, possiamo usare PowerShell per forzare la modifica al file. Questa funzione è cotta direttamente in Export-CSV. Il modo in cui è fatto è slegando il file come di sola lettura, eseguendo la modifica, quindi segnandolo di nuovo in costruzione.
Per sovrascrivere il file di sola lettura esistente, utilizzare il flag "-force".
$ GET-PROCESS | Export -CSV -Append -Force -Path/Home/Viktor/Desktop/Processi.CSV
Codifica dei file
Per la codifica dei file, Export-CSV utilizza UTF-8 per impostazione predefinita. È la codifica universale per tutti i file di testo. Tuttavia, in situazioni specifiche, la codifica diversa ha più senso. Per fortuna, Export-CSV supporta la definizione di codifica specifica.
Per specificare una codifica specifica, utilizzare il flag "-coding".
$ GET-PROCESS | Export -CSV -Coding-Path/Home/Viktor/Desktop/Processi.CSV
Ecco un elenco di tutti i formati di codifica supportati.
Pensieri finali
Il cmdlet di esportazione-CSV in PowerShell è un potente strumento per esportare informazioni in formato CSV. Questa guida dimostra alcuni dei modi per esportare CSV. Può anche essere implementato negli script PowerShell per automatizzare il trasferimento dei dati. Converte i dati strutturati in un formato più semplice e leggibile dall'utente che molte applicazioni possono utilizzare.
Felice calcolo!