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
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
Post a Comment