Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
338 views
in Technique[技术] by (71.8m points)

powershell - Import from CSV to Hashtable, then export back to CSV

I have a CSV that uses a running log to update the status of a lot of automated tasks. I need a quick method to look up information from the CSV so I can modify it and export it back to the CSV.

For this example, let's assume that I'm keeping track of running processes and I want to use the "ID" property as a key for the hashtable.

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

I can import from the CSV just fine, but I don't know how to convert it to a hashtable or get it from a hashtable to CSV.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
  • To convert the CSV import to a hashtable, you use Group-Object.
  • To export the hashtable back to CSV, you have to use the .GetEnumerator() method to break it down back into objects for use with Export-Csv.

Using the example above:

$pathCsv = ($env:TEMP + '	est.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

I asked this question here so i could answer it for anyone else who was searching for a resolution to the same problem.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...