Как разобрать специальный формат файла в 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 ""


}

0 ответов

Другие вопросы по тегам