从 CSV 导入到哈希表,然后导出回 CSV

Import from CSV to Hashtable, then export back to CSV

我有一个 CSV,它使用 运行 日志来更新许多自动化任务的状态。我需要一种从 CSV 中查找信息的快速方法,以便我可以对其进行修改并将其导出回 CSV。

对于这个例子,假设我正在跟踪 运行 个进程并且我想使用 "ID" 属性 作为哈希表的键。

$pathCsv = 'C:\test\test.csv'
Get-Process | Export-Csv $pathCsv

我可以很好地从 CSV 导入,但我不知道如何将其转换为哈希表或将其从哈希表转换为 CSV。

  • 要将 CSV 导入转换为哈希表,请使用 Group-Object。
  • 要将哈希表导出回 CSV,您必须使用 .GetEnumerator() 方法将其分解回对象以用于 Export-Csv。

使用上面的例子:

$pathCsv = ($env:TEMP + '\test.csv')
Get-Process | Export-Csv $pathCsv

#import CSV to array as hash table using the ID property as the key
$toHashTable = Import-Csv $pathCsv | Group-Object -AsHashTable -Property ID

#make changes to hashtable here

#break the hashtable into the pipeline, then grab each $_.Value property
#and break that out of the hashtable into the pipeline
$toHashTable.GetEnumerator() | ForEach{($_.Value).GetEnumerator()} | Export-Csv $pathCsv

我在这里问了这个问题,所以我可以为正在寻找相同问题解决方案的其他人回答。