【发布时间】:2017-01-20 09:14:21
【问题描述】:
我正在使用 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
}
【问题讨论】:
标签: powershell foreach