Come esportare in CSV in PowerShell

Come esportare in CSV in PowerShell
Il CSV (valori separati da virgola) è un modo per archiviare i dati in file di testo semplice. È un metodo efficace per condividere informazioni strutturate, simile a un foglio di calcolo. È un formato universale supportato da numerose applicazioni di ufficio e database.

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.

  • ASCII
  • Unicode
  • UTF7
  • UTF8
  • Utf8bom
  • Utf8nobom
  • UTF32
  • Bigendianunicode

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!