Я нашел это решение на 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"
Хотя для этого требуется "
.
Вопрос в том, что нужно изменить, чтобы добавить новый уровень глубины, к которому можно получить доступ, не заключая его в "
?