我正在处理一个 PowerShell 的配置文件,每次调用 foreach 循环获取数据时,它都会以错误的顺序获取。如下所示:
config.ini
[queries]
query01=stuff1
query02=stuff2
query03=stuff3
query04=stuff4
<代码>foreach循环:#Loads an INI file data into a variable
$iniContent = Get-IniContent 'config.ini'
#grabs the hashtable for the data under the [queries] section
$queries = $iniContent['queries']
foreach($query in $queries.GetEnumerator())
{
write-host $query.name
}
我得到了以下输出:
stuff1
stuff4
stuff2
stuff3
我假设这与PowerShell的异步处理有关,但是如何以我在
config.ini
文件中存储的顺序处理查询最好呢?注意:我为测试目的在查询结尾添加了编号(
query01
)。在我最终的config.ini
中将不包含它们。编辑:
Get-IniContent
函数:function Get-IniContent ($filePath)
{
$ini = @{}
switch -regex -file $FilePath
{
“^\[(.+)\]” # Section
{
$section = $matches[1]
$ini[$section] = @{}
$CommentCount = 0
}
“(.+?)\s*=(.*)” # Key
{
$name,$value = $matches[1..2]
$ini[$section][$name] = $value
}
}
return $ini
}
$ini[$section]
。现在一切都完美无缺。 - Webtron