我整天都在苦苦挣扎......我正在尝试导入csv,过滤掉某些商店,将所有商店ID零填充到5位数,然后用不同的分隔符重新导出csv并删除引号。我已经完成所有工作,除了零填充(input3不工作)。
#Sleep -seconds 20 #wait for RW report generation
$input = Import-Csv E:\RWS\SysFiles\reports\CAST\ClientExport.csv -Header 'store','desc','status','ip','tcpip','timezone','drive','path','col9','col10'
$input2 = $input | where-object { $_.store -match "[0-9]" -and -not $_.store.StartsWith("99") }
#$input3 = $input2 | ForEach-Object { $_.store = $_.store.PadLeft(5,'0') }
$input3 | ConvertTo-Csv -NoTypeInformation -Delimiter ';' | % {$_ -replace '"', ""} | out-file E:\RWS\SysFiles\reports\CAST\CleanClientExport.csv -force
示例输入:
32013,“SHREVEPORT,LA”,ENABLED,10.4.43.11,(TCP / IP), - 6,C:,\ Program 文件\远程\ ,, 7045,ELIZABETHTOWN-KY,ENABLED,10.82.240.11,(TCP / IP), - 5,C:\程序 文件\远程\ ,,
示例:
32013; SHREVEPORT,LA; ENABLED; 10.4.43.11;(TCP / IP); - 6; C:; \ Program FILES \遥控\ ;; 的 07045 ; ELIZABETHTOWN-KY; ENABLED; 10.82.240.11;(TCP / IP); - 5; C:; \程序 文件\远程\ ;;
我只是得到了一个空白的csv ...而且我很难在PS控制台中查看$ input,无法弄清楚如何显示我在主机屏幕上导入的内容!
答案 0 :(得分:1)
Import-Csv E:\RWS\SysFiles\reports\CAST\ClientExport.csv -Header ... |
Where-Object { $_.store -match "[0-9]" -and -not $_.store.StartsWith("99") } |
Foreach-Object {$_.store = $_.store.PadLeft(5,'0'); $_} |
ConvertTo-Csv -NoTypeInformation -Delimiter ';' |
Foreach-Object {$_ -replace '"'} |
Out-File E:\RWS\SysFiles\reports\CAST\CleanClientExport.csv -Force
答案 1 :(得分:0)
这样的事情应该有效:
$infile = "E:\RWS\SysFiles\reports\CAST\ClientExport.csv"
$outfile = "E:\RWS\SysFiles\reports\CAST\CleanClientExport.csv"
Import-Csv $infile -Header 'store','desc','status','ip','tcpip','timezone','drive','path','col9','col10' `
| ? { $_.store -notmatch '^99' } `
| % { $_.store = "{0:D5}" -f [int]$_.store; $_ } `
| ConvertTo-Csv -NoTypeInformation -Delimiter ';' `
| % { $_ -replace '"', '' } `
| Out-File $outfile -Force
如果将CSV导入变量,则可以通过输入仅包含变量的行来显示导入的数据:
PS C:\> $csv = Import-Csv $infile -Header 'store','desc','status','ip',...
PS C:\> $csv
store : 32013
desc : SHREVEPORT, LA
status : ENABLED
ip : 10.4.43.11
tcpip : (TCP/IP)
timezone : -6
drive : C:
path : \Program Files\Remote\
col9 :
col10 :
store : 07045
desc : ELIZABETHTOWN-KY
status : ENABLED
ip : 10.82.240.11
tcpip : (TCP/IP)
timezone : -5
drive : C:
path : \Program Files\Remote\
col9 :
col10 :