ConvertTo-Csv turns objects in PowerShell into CSV (comma-separated values) strings:
PS> Get-Process -Id $pid | Select-Object Name, Id, Path | ConvertTo-Csv
#TYPE Selected.System.Diagnostics.Process
"Name","Id","Path"
"powershell_ise","9956","C:WINDOWSSystem32WindowsPowerShellv1.0powershell_ise.exe"
ConvertFrom-Csv turns CSV formatted strings into objects. For example:
"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. For 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 ConvertFrom-Csv reads is expected to be a header. If there is 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