Aggiungi colonna a CSV Windows PowerShell

Ho un file csv abbastanza standard con intestazioni che voglio aggiungere una nuova colonna e impostare tutte le righe sugli stessi dati.

Originale:

column1, column2 1,b 2,c 3,5 

Dopo

 column1, column2, column3 1,b, setvalue 2,c, setvalue 3,5, setvalue 

Non riesco a trovare nulla su questo se qualcuno potrebbe indicarmi la giusta direzione che sarebbe grande. Scusa molto nuovo per Power Shell.

Ecco un modo per farlo usando le Proprietà calcolate:

 Import-Csv file.csv | Select-Object *,@{Name='column3';Expression={'setvalue'}} | Export-Csv file.csv -NoTypeInformation 

Puoi trovare ulteriori informazioni sulle proprietà calcolate qui: http://technet.microsoft.com/en-us/library/ff730948.aspx .

In poche parole, si importa il file, si reindirizza il contenuto al cmdlet Select-Object , si selezionano tutte le proprietà esistenti (ad esempio ‘*’) e ne si aggiunge uno nuovo.

La risposta di ShayLevy funziona anche per me!

Se non vuoi fornire un valore per ogni object, il codice è ancora più semplice …

 Import-Csv file.csv | Select-Object *,"column3" | Export-Csv file.csv -NoTypeInformation 

Per alcune applicazioni, ho trovato che produrre una tabella hash e usare i .values la colonna fosse buona (consentirebbe la convalida del riferimento incrociato contro un altro object che veniva enumerato).

In questo caso, #powershell su freenode ha portato la mia attenzione su una tabella hash ordinata (poiché l’intestazione della colonna deve essere utilizzata).

Ecco un esempio senza alcuna validazione dei .values

 $newcolumnobj = [ordered]@{} #input data into a hash table so that we can more easily reference the `.values` as an object to be inserted in the CSV $newcolumnobj.add("volume name", $currenttime) #enumerate $deltas [this will be the object that contains the volume information `$volumedeltas`) # add just the new deltas to the newcolumn object foreach ($item in $deltas){ $newcolumnobj.add($item.volume,$item.delta) } $originalcsv = @(import-csv $targetdeltacsv) #thanks to pscookiemonster in #powershell on freenode for($i=0; $i -lt $originalcsv.count; $i++){ $originalcsv[$i] | Select-Object *, @{l="$currenttime"; e={$newcolumnobj.item($i)}} } 

L’esempio è relativo a Come posso eseguire l’aritmetica per trovare differenze di valori in due CSV?

crea un file CSV con niente in esso

$csv >> "$PSScriptRoot/dpg.csv"

definire il percorso del file csv. qui $ psscriptroot è la radice dello script

$csv = "$PSScriptRoot/dpg.csv"

ora aggiungi colonne ad esso

$csv | select vds, protgroup, vlan, ports | Export-Csv $csv