powershell - Select-Object on imported CSV column with space in name returned empty values -


i'm writing script process csv file created on non-windows platform.

the csv has lot of columns, not of want. are:

   typename: system.management.automation.pscustomobject  name ---- equals gethashcode gettype tostring avgcputime avg_cards_pn avg_cards_rd avg_elapsed avg_io_time avg_lines_prntd avg_ov_mem avg_ov_mem_int avg_sav_mem avg_sav_mem_int begindate begintime cards_pn cards_rd cputime dckeyin elapsed enddate endtime io_time jobname jobstatus jobtype lines_prntd manual mixnum ov_mem ov_mem_int pcjob refnum runtime parameters            ... sav_mem sav_mem_int scheddate schedtime system tasknum usercode 

i have problem selecting property, runtime parameters - both of following bits of code result in me having column name expect, every value in column empty (i'm using out-gridview while writing script, final script output data new file once i've filtered where-object etc pull out info need - intention powershell script run automated process when file lands on server).

$inp = import-csv k:\logstats_allbatch_20150602165021.csv $inp| select usercode,jobname,mixnum,tasknum,begindate,begintime,enddate,endtime,dckeyin,manual,jobstatus,jobtype,cputime,iotime,elapsed,system,"runtime parameters"|ogv  $inp = import-csv k:\logstats_allbatch_20150602165021.csv $inp| select usercode,jobname,mixnum,tasknum,begindate,begintime,enddate,endtime,dckeyin,manual,jobstatus,jobtype,cputime,iotime,elapsed,system,@{name="params";expression={$_."runtime parameters"}}|ogv 

here's sample of input:

"refnum","usercode","jobname","mixnum","tasknum","begindate","begintime","enddate","endtime","scheddate","schedtime","dckeyin","manual","pcjob","jobstatus","jobtype","cputime","avgcputime","io_time","avg_io_time","elapsed","avg_elapsed","sav_mem","avg_sav_mem","ov_mem","avg_ov_mem","sav_mem_int","avg_sav_mem_int","ov_mem_int","avg_ov_mem_int","lines_prntd","avg_lines_prntd","cards_rd","avg_cards_rd","cards_pn","avg_cards_pn","system","runtime parameters"                                                                                                                                                                                  01141730,test            ,controlcard                         ,09376,00000,20150601,0106,20150601,0106,20150601,0100,n,n,n,completedok ,scheduled ,0000000000,0000000000,0000000000,0000000000,   0:00:00,   0:00:00,0000000000,0000000000,0000000000,0000000000,0000000000,0000000000,0000000000,0000000000,0000000000,0000000000,0000000000,0000000000,0000000000,0000000000,01234,"beta" "incr" "all"   

and here's example of output 2nd piece of code, piped through format-list:

usercode  : test  jobname   : controlcard  mixnum    : 09376 tasknum   : 00000 begindate : 20150601 begintime : 0106 enddate   : 20150601 endtime   : 0106 dckeyin   : n manual    : n jobstatus : completedok  jobtype   : scheduled  cputime   : 0000000000 iotime    :  elapsed   : 0:00:00 system    : 01234 params    :  

any understanding why i'm either not selecting property space in it, or not seeing values, appreciated!
edit: seems code ok there possible issue encoding of header - adding screenshot hex editor @ansgar wiechers

enter image description here

it seems input file contains null characters mess field names. can remove them this:

$file = 'c:\path\to\your.csv' (get-content $file -raw) -replace [string][char]0 | set-content $file 

removing null characters should safe, since file appears ascii encoded (no bom in screenshot).

the removal operation took second when tested on 13 mb sample file.

warning: not use on unicode encoded files (utf-8, utf-16, ...) or you'll end gibberish in files.


Comments