У меня проблема с анализом файла с парами ключ-значение, когда один из ключей называется «длина». Передача содержимого в ConvertFrom-StringData создает хеш-таблицу с ключом «длина», но, когда я пытаюсь получить к нему доступ, вместо этого я получаю длину таблицы. Оказывается, это потому, что ConvertFrom-StringData возвращает массив хеш-таблиц, а Length это длина массива (в нашем случае 6).
Есть идеи, как обойти это? Для обычной хеш-таблицы вы можете создать ключ с именем length и получить к нему прекрасный доступ ($ tmp [1] .length дает 1000um, как и должно быть). Однако обычно я не буду знать индекс поля «длина» в файле.
> $tmp = Get-Content "Sample Settings.txt"
> $tmp
device=Hall bar
length=1000um
width=500um
thickness=8nm
system=PPMS
field=Perpendicular
> $tmp = $tmp | ConvertFrom-StringData
> $tmp
Name Value
---- -----
device Hall bar
length 1000um
width 500um
thickness 8nm
system PPMS
field Perpendicular
> $tmp.length
6
> $tmp[1].length
1000um
> $tmp.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
> $tmp[0].GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Hashtable System.Object