The problem with the first command, is the Format-Output cmdlet call, before exporting it to a csv file. You should only use one of the Format-* cmdlets, to format output going to the screen. In this case, you can use the Select-Object cmdlet, to retrieve only the properties that you want.
Get-vm | Get-snapshot | Select-Object -Property VM,Name,Created,Description, SizeMB |
Export-CSV Path c:\test\snapshotlist.csv -NoTypeInformation -UseCulture
In the second script, you can remove the calls to the Foreach-Object cmdlet, and use the Where-Object cmdlet instead:
$twodaysago = (Get-Date).AddDays(-2)
Get-Folder miketest |
Get-VM |
Get-Snapshot |
Where-Object {$_.Created -lt $twodaysago} |
Remove-Snapshot $_ -confirm:$false -runasync
You can pipe the output to the Export-CSV cmdlet, like you do in the first command. You can use the Send-MailMessage cmdlet, to send the csv file via e-mail.