1

我整天都在为此苦苦挣扎...我正在尝试导入 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",启用,10.4.43.11,(TCP/IP),-6,C:,\Program Files\Remote\,, 7045,ELIZABETHTOWN-KY,启用,10.82.240.11,(TCP/IP ),-5,C:,\Program Files\Remote\,,

示例:

32013;SHREVEPORT, LA;启用;10.4.43.11;(TCP/IP);-6;C:;\Program Files\Remote\;; 07045 ;ELIZABETHTOWN-KY;已启用;10.82.240.11;(TCP/IP);-5;C:;\Program Files\Remote\;;

我只是得到一个空白的 csv ......我正在努力在 PS 控制台中查看 $input,无法弄清楚如何在主机屏幕上显示我导入的内容!

4

2 回答 2

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
于 2013-06-04T08:55:26.693 回答
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    :
于 2013-06-03T21:30:02.997 回答