“选择-跳过”不会跳过第一行

时间:2019-03-18 11:21:30

标签: powershell csv select skip import-csv

我需要跳过csv的前4行,因为第5行包含标题:

1 Assetliste;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 Firma: Ospelt  Gruppe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3 Abrufdatum: 19.02.2018 23:06;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4 User:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5 Header1; Header2 and so on.....

我使用以下PowerShell代码以我需要的格式导入和导出文件

$ImportedCSV = Import-CSV "$($importPath)\$($name.name)" -Delimiter ';' | Select -skip 4 
$ImportedCSV | ConvertTo-Csv -NoTypeInformation | % {$_ -replace '"', ""} | Out-File ("$($importPath)\$($name.name)")

但是它不会跳过第一行,从而导致以下输出:

1 Assetliste
2 Develop
3 Develop
4 Kyocera
5 Kyocera

如果我手动删除这4行而不使用“选择跳过”,则我的脚本将按计划工作:

1 Marke,Modell,ArtikelNr, ...
2 Develop,ineo+ 308,A7PY121, ...
3 Develop,ineo 284e,A61G121, ...
4 Kyocera,FS-4200DN,FS-4200DN, ...
5 and so on.....

2 个答案:

答案 0 :(得分:1)

鉴于您的情况(有点奇怪),您可以执行以下操作:

$csv = Get-Content -Path "$importpath\$($name.name)" | Select-Object -Skip 4
$csv = $csv | ConvertTo-Csv -Delimiter ';' -NoTypeInformation
$csv | Export-Csv -Path "$importpath\$($name.name)" -NoTypeInformation -Force

您必须在发生转换之前 删除有问题的行。

答案 1 :(得分:0)

Import-Csv期望第一行是标题。请改用Get-Content

$ImportedCSV = Get-Content "$($importPath)\$($name.name)" -Delimiter ';' | Select -skip 4