【发布时间】:2019-01-24 21:40:31
【问题描述】:
当其中一个键名为“length”时,我在解析具有键值对的文件时遇到问题。将内容传送到 ConvertFrom-StringData 会创建一个带有名为“length”的键的哈希表,但是当我尝试访问它时,我得到的是表的长度。原来这是因为 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
【问题讨论】:
-
txt 文件的内容可能有用。因为 $tmp 是一个数组,你应该这样对待它。数组索引、foreach 等
-
顶部 Get-Content 命令的输出是它的样子。
-
为疏忽道歉。
标签: powershell key hashtable