J'ai un problème pour analyser un fichier contenant des paires clé-valeur lorsque l'une des clés est nommée "length". La conversion du contenu en ConvertFrom-StringData crée une table de hachage avec la clé "length" mais, lorsque j'essaie d'y accéder, j'obtiens la longueur de la table à la place. Il s'avère que c'est parce que ConvertFrom-StringData renvoie un tableau de tables de hachage et que Length est la longueur du tableau (6 dans ce cas).
Une idée sur la manière de contourner ce problème ? Pour une table de hachage normale, vous pouvez créer une clé appelée longueur et y accéder sans problème ($tmp[1].length donne 1000um comme il se doit). Cependant, je ne connais généralement pas l'index du champ "longueur" dans le fichier.
> $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