Eksport danych zawierających więcej wartości do pliku csv

W przypadku gdy w powershell wyświetlamy dane zawierające więcej wartości np. w listę odbiorców poczty w wynikach wyświetlanych na ekranie dane przedstawiane są poprawnie jednak w przypadku eksportu tych danych do pliku csv w takim polu otrzymujemy wartość „System.String[]”. Np. po wydaniu polecenia:

Get-MessageTrackingLog -ResultSize unlimited -Recipients '[email protected]'|select timestamp,eventid,sender,recipients,RecipientStatus,messagesubject | Export-Csv c:\temp\wynik.csv -Encoding UTF8 -NoTypeInformation

Aby w pliku csv otrzymać poprawne dane musimy nieco zmodyfikować polecenie i wykorzystać funkcję join

Get-MessageTrackingLog -ResultSize unlimited -Recipients '[email protected]'|select timestamp,eventid,sender,@{Name='recipients';Expression={[string]::join(";", ($_.recipients))}},@{Name='RecipientStatus';Expression={[string]::join(";", ($_.RecipientStatus))}},messagesubject|Export-Csv c:\temp\wynik.csv -Encoding UTF8 -NoTypeInformation

w powyższym przykładzie modyfikacji poddane zostały wartości recipients oraz RecipientStatus