Как разобрать специальный формат файла в PowerShell?
Я пытаюсь прочитать файл (см. Фрагмент примера ниже) в PowerShell и работать с ним. Цель состоит в том, чтобы найти неправильные значения с помощью сценария, но сначала мне нужно создать что-то вроде «базы данных», поскольку файл необычный.
Пример:
а) Если SomeValue в 1.2.19.9 содержит "" -> Ошибка записи
б) получить дерево 1.2.19.9 и отобразить его в виде таблицы
в) знать все деревья типа 1.2.19.9
г) группировать деревья по значениям в пределах {}
Фрагмент:
{VPN}
1.2.19.8 = 1
1.2.19.64.1 = 0
1.2.19.16 = 1
1.2.19.17 = 0
1.2.19.22 = 0
<1.2.19.9>
(1.2.19.9.1.1) = value1
(1.2.19.9.1.6) = 0
(1.2.19.9.1.2) = 0.0.0.0
(1.2.19.9.1.8) = 0.0.0.0
(1.2.19.9.1.15) = 0
(1.2.19.9.1.4) = value1
(1.2.19.9.1.5) = 0
(1.2.19.9.1.7) = 0
(1.2.19.9.1.9) = 1
(1.2.19.9.1.10) = 30
(1.2.19.9.1.11) = 0
(1.2.19.9.1.12) = 0
(1.2.19.9.1.13) = 0
(1.2.19.9.1.16) = 0
(1.2.19.9.1.17) = value2
(1.2.19.9.1.18) =
(1.2.19.9.1.19) = DEFAULT
(1.2.19.9.1.20) = DEFAULT
<1.2.19.9>
(1.2.19.9.2.1) = value3
(1.2.19.9.2.6) = 0
(1.2.19.9.2.2) = 0.0.0.0
(1.2.19.9.2.8) = 0.0.0.0
(1.2.19.9.2.15) = 0
(1.2.19.9.2.4) = value3
(1.2.19.9.2.5) = 0
(1.2.19.9.2.7) = 0
(1.2.19.9.2.9) = 1
(1.2.19.9.2.10) = 30
(1.2.19.9.2.11) = 0
(1.2.19.9.2.12) = 0
(1.2.19.9.2.13) = 0
(1.2.19.9.2.16) = 0
(1.2.19.9.2.17) = value4
(1.2.19.9.2.18) =
(1.2.19.9.2.19) = DEFAULT
(1.2.19.9.2.20) = DEFAULT
Это то, что я придумал до сих пор, но это даже не близко к тому, что мне нужно ...
$path = "file.lcf"
$DB = Get-Content $path
$result =@()
$pfad = ""
$wert = ""
$result = [pscustomobject]@{
}
foreach ($Data in $DB) {
$pfad, $wert = $Data -split '<' -split '>' -split '=' -split '{' -replace '^\s*|\s*$' -replace '<' -replace '>' -replace '}' -replace '[#?\{\[\(\)\]\}]' -replace ' '
write-host $pfad
Write-host $wert
Write-host ""
}