2

我有一个由我的备份软件生成的制表符分隔的文本文件。我希望能够使用 Import-CSV 将其作为 PowerShell 数组导入。

问题是导出文件的前 5 行阻止 PowerShell 将其识别为数组:

#List of Media
#Cell Manager: hpdp.domain.local
#Creation Date: 11/08/2018 9:36:09 AM
# Headers
# Medium ID Label   Location    Status  Protection  Used [MB]   Total [MB]  Last Used   Last Used_t Pool    Type

我能够“解决”这个问题的方法是使用记事本删除前四行并从标题行中删除第一个 # 。然后该文件如下所示:

Medium ID   Label   Location    Status  Protection  Used [MB]   Total [MB]  Last Used   Last Used_t Pool    Type
id1:id2:id3:id5 [hostname] labelname_31 [Library:     5]    Good    13/08/2018 10:01:41 PM  762699.50   762699.50   14/07/2018 10:00:36 PM  1531828836  Tape Drive Pool LTO-Ultrium

我正在尝试找到一种让 PowerShell 进行此更改的方法。例如,我尝试使用以下行作为第一步删除前四行:

(Get-Content $file | Select-Object -Skip 4) | Set-Content $file

该文件似乎随后会丢失其制表符,因此不再分隔。

如何删除行以及第一个 # 而不会丢失选项卡?提前致谢!

4

1 回答 1

2

这可以通过这样的事情来完成

$data = Get-Content $file | Select-Object -Skip 4 
$data[0] = $data[0] -replace '^#\s*', ''

现在,您可以根据需要覆盖该文件:

$data | Set-Content $file -Force

或直接将其用作 Powershell 中的对象(一个 csv 对象是一个 PSObjects 数组)

$csv = ($data -join [environment]::NewLine) | ConvertFrom-Csv -Delimiter "`t"

或使用此转换后的对象再次写出文件

$csv | Export-Csv -Path $file -Delimiter "`t" -NoTypeInformation -Force
于 2018-08-11T10:05:33.520 回答