如何根据起始行将一段文本分割成多行记录?

问题描述 投票:0回答:1

如何将其拆分为单独的字符串/数组/等,以便我可以分别迭代每个字符串?目标是将它们分开,以便我可以解析每个记录并将其插入到 PSCustomObject 中。

我有以下代表超过 1 次扫描的文本块。每个扫描记录都以“根扫描路径”行开始,以“可疑文件”行结束。

我能得到的最接近的是以下行,它可以工作,但随后我丢失了“根扫描路径”行,因为它是分隔符。

$String -Split "Root Scan Path: C:\\"

扫描记录也可能超过 2 条。

Root Scan Path: C:\
Scan ID: 03307ad8-1a59-7d4e-8dfe-28864c9d1bc2
Status: Completed
Initiated from: User
Start Time: Monday, October 23, 2023 9:24:18 PM
End Time: Monday, October 23, 2023 9:34:00 PM
Scanned Files: 38311
Unsupported Files: 229479
Traversed Files: 321202
Total Files: 267790
Suspicious Files: 0
Root Scan Path: C:\
Scan ID: f32a64b0-56f5-664c-bf37-a7b120f759d8
Status: Running
Initiated from: User
Start Time: Tuesday, October 24, 2023 6:20:45 PM
End Time:
Scanned Files: 0
Unsupported Files: 0
Traversed Files: 0
Total Files: 0
Suspicious Files: 0
arrays string powershell split
1个回答
0
投票

我会在换行符上进行拆分,并将第一次出现的冒号替换为唯一字符(例如等号),然后使用

ConvertFrom-String
来获取正确的 PowerShell 对象。

@'
Root Scan Path: C:\
Scan ID: 03307ad8-1a59-7d4e-8dfe-28864c9d1bc2
Status: Completed
Initiated from: User
Start Time: Monday, October 23, 2023 9:24:18 PM
End Time: Monday, October 23, 2023 9:34:00 PM
Scanned Files: 38311
Unsupported Files: 229479
Traversed Files: 321202
Total Files: 267790
Suspicious Files: 0
Root Scan Path: C:\
Scan ID: f32a64b0-56f5-664c-bf37-a7b120f759d8
Status: Running
Initiated from: User
Start Time: Tuesday, October 24, 2023 6:20:45 PM
End Time:
Scanned Files: 0
Unsupported Files: 0
Traversed Files: 0
Total Files: 0
Suspicious Files: 0
'@ -split "\r?\n" |
    ForEach-Object {
        $_ -replace ':(?=\s|$)',' ='
    } | ConvertFrom-StringData -Delimiter '='

输出如下所示:

Name                           Value
----                           -----
Root Scan Path                 C:
Scan ID                        03307ad8-1a59-7d4e-8dfe-28864c9d1bc2
Status                         Completed
Initiated from                 User
Start Time                     Monday, October 23, 2023 9:24:18 PM
End Time                       Monday, October 23, 2023 9:34:00 PM
Scanned Files                  38311
Unsupported Files              229479
Traversed Files                321202
Total Files                    267790
Suspicious Files               0
Root Scan Path                 C:
Scan ID                        f32a64b0-56f5-664c-bf37-a7b120f759d8
Status                         Running
Initiated from                 User
Start Time                     Tuesday, October 24, 2023 6:20:45 PM
End Time
Scanned Files                  0
Unsupported Files              0
Traversed Files                0
Total Files                    0
Suspicious Files               0
© www.soinside.com 2019 - 2024. All rights reserved.