从 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
我在这里问了这个问题,所以我可以为正在寻找相同问题解决方案的其他人回答。
我有一个 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
我在这里问了这个问题,所以我可以为正在寻找相同问题解决方案的其他人回答。