У меня есть текстовая распечатка DISA STIG. Это выглядит так:
Group ID (Vulid): V-96855
Group Title: SRG-NET-000018-RTR-000001
Rule ID: SV-105993r1_rule
Severity: CAT II
Rule Version (STIG-ID): CISC-RT-000010
Rule Title: The Cisco router must be configured to enforce approved authorizations for controlling the flow of information within the network based on organization-defined information flow control policies.
...
_____________________________________________________________
Group ID (Vulid): V-96857
Group Title: SRG-NET-000025-RTR-000020
Rule ID: SV-105995r1_rule
Severity: CAT II
Rule Version (STIG-ID): CISC-RT-000020
Rule Title: The Cisco router must be configured to implement message authentication for all control plane protocols.
...
_____________________________________________________________
Group ID (Vulid): V-96859
Group Title: SRG-NET-000025-RTR-000085
Rule ID: SV-105997r1_rule
Severity: CAT II
Rule Version (STIG-ID): CISC-RT-000030
Rule Title: The Cisco router must be configured to use keys with a duration not exceeding 180 days for authenticating routing protocol messages.
...
Я бы хотел обработать это, но у меня возникают проблемы с тем, как powershell обрабатывает многострочные вводы. Я пытаюсь разделить каждое правило (между ____ делителями) в отдельный раздел, а затем превратить его в xml. Когда я импортирую контент и пытаюсь разделить его, он либо выходит по одной строке за раз, что означает, что я не могу очень хорошо обработать разделитель, или я пытался закодировать его как строку, и в этом случае каждыйперсонаж выходит одновременно.
$rawContent = Get-Content C:\Users\ncfx\Projects\SignatureRWK\raw.txt -Raw
$splitRules = $rawContent.Split("_____________________________________________________________")
Foreach ($rule in $splitRules) {
$rulectArr = $rule.split(":")
$processedContent += @"
<Rule>
<Group ID>$($rulectArr[1])</Group ID>
#...
"@
Требуемый вывод:
<GroupId>V-96197</GroupId>
<GroupTitle>SRG-APP-000026-NDM-000208</GroupTitle>
<RuleId>SV-105335r1_rule</RuleId>
Фактический вывод:
<GroupId>V-96197</GroupId>
<GroupTitle></GroupTitle>
<RuleId></RuleId>
...
<GroupId>SRG-APP-000026-NDM-000208</GroupId>
<GroupTitle></GroupTitle>
<RuleId></RuleId>
Я также пытался использовать регулярные выражения без особого успеха (хотя я будусначала признать, что я очень плохой в этом.)