3
votes

I am working on a little PowerShell script that should remove a named column. Is there a way to not NOT select a column with header name "xyz"?

I tried to get the header names by

$hnames = $csv | Get-Member -MemberType NoteProperty | foreach {$_.name}

and join the result into a comma separated string and remove the unwanted header

$new = $hnames -join ","
$new = $new -replace "xyz,", ""

and import/export the CSV with select

Import-CSV $tempfile -Delimiter ";" | Select $new |
    Export-Csv tempynew.csv -Delimiter ";" -Encoding UTF8 -NoTypeInfo   

but it only outputs the header in the CSV file.

2

2 Answers

11
votes

Use the -ExcludeProperty parameter with Select-Object instead:

Import-Csv $tempfile -Delimiter ";" | Select * -ExcludeProperty xyz |
    Export-Csv tempynew.csv -Delimiter ";" -Encoding UTF8 -notypeinfo
3
votes

You could also just specify columns you wish to include, like this:

Import-Csv $tempfile -Delimiter ";" | Select Column1,Column2,Column10 | Export-Csv tempynew.csv -Delimiter ";" -Encoding UTF8 -notypeinfo