我正在使用PowerShell的配置文件,每當我調用foreach循環來抓取數據時,它都會以錯誤的順序抓取數據。請看下圖: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
大抓@StephenP! – briantist