Файл свойств чтения Powershell с несколькими уровнями глубины - PullRequest
1 голос
/ 15 октября 2019

Я нашел это решение на serverfault.se для чтения свойств в HashTable:

$ini = @{}
switch -regex -file "properties.ini"
{

    "^\[(.+)\]$" {
        $section = $matches[1]
        $ini[$section] = @{}
    }
    "(.+)=(.+)" {
        $name,$value = $matches[1..2]
        $ini[$section][$name] = $value
    }
}

Это прекрасно работает для файлов свойств, таких как:

[vendor]
vendor1=porsche
[engine]
engine1=f1.engine

Затем к этим свойствам можно получить доступ:

$ini.vendor.vendor1
$ini.engine.engine1

Проблема, с которой я столкнулся, заключается в том, что я хотел бы добавить к ней «новый уровень глубины». Я изменил файл свойств следующим образом:

[vendor]
vendor1=porsche
[engine]
carengine.f1=f1-engine
carengine.dmt=dmt-engine

Теперь я ожидаю получить доступ к свойствам с помощью

$ ini.engine.carengine.f1

, который затем долженвывод f1-engine. Тем не менее, это не работает, как ожидалось. Я думаю, это из-за способа доступа к хеш-таблице.

На самом деле я только что нашел способ доступа к свойствам в текущей версии:

$ini.engine."carengine.f1"

Хотя для этого требуется ".

Вопрос в том, что нужно изменить, чтобы добавить новый уровень глубины, к которому можно получить доступ, не заключая его в "?

...