ConvertTo-Csv turns objects in PowerShell into comma-separated value (CSV) strings:
PS> Get-Process -Id $pid | Select-Object Name, Id, Path | ConvertTo-Csv
"Name","Id","Path"
"powershell_ise","9956","C:WINDOWSSystem32WindowsPowerShellv1.0powershell_ise.exe"
In the preceding example, Windows PowerShell will also include type data by default.
ConvertFrom-Csv turns CSV-formatted strings into objects:
"David,0123456789,28" | ConvertFrom-Csv -Header Name, Phone, Age
As ConvertFrom-Csv is specifically written to read CSV-formatted data, it will discard quotes surrounding strings but will allow fields to spread across lines and so on. Consider the following example:
'David,0123456789,28,"1 Some street, A Lane"' | ConvertFrom-Csv -Header Name, Phone, Age, Address | Format-Table -Wrap
If the Header parameter is not defined, the first line read by ConvertFrom-Csv is expected to be a header. If there's only one line of data, nothing will be returned:
'Name,Age', 'David,28' | ConvertFrom-Csv
Export-Csv and Import-Csv complement these two commands by writing and reading information to a file instead:
Get-Process -Id $pid | Select-Object Name, Id, Path | Export-Csv 'somefile.csv' Import-Csv somefile.csv