If you pipe this as-is to a CSV you will just get a CSV file with the length of each string.
The solution is to use a Select-Object and pass objects to the Export-CSV cmdlet.
Something like this for example
Get-Datacenter | Get-VM | %{
$vm = $_
Get-Datastore -VM $vm |
Select @{N="Name and DS";E={$vm.Name + "-" + $_.Name}}
} | Export-Csv C:\report.csv -NoTypeInformation -UseCulture