Export-Csv
erwartet, dass die Eingabe Objekte sind. String-Eingaben werden als String-Objekte betrachtet, die nur eine Eigenschaft haben (Length
), sodass nur diese Eigenschaft exportiert wird. Wenn Ihre Eingabe ein Array von Zeichenfolgen ist, müssen Sie sie in ein Objekt umwandeln, z. so:
$array = "foo", "bar", "baz"
New-Object -Type PSCustomObject -Property @{
"a" = $array[0]
"b" = $array[1]
"c" = $array[2]
} | Export-Csv output.csv -NoTypeInformation
Das Obige würde eine Datei output.csv
erstellen mit folgendem Inhalt:
"c","a","b"
"baz","foo","bar"
Die Eigenschaftsnamen (a
, b
, c
) werden zu den CSV-Headern, den Eigenschaftswerten (foo
, bar
, baz
) werden zu den CSV-Werten.
Wenn Ihre SQL-Abfrage eine Liste von Arrays generiert, müssen Sie wahrscheinlich so etwas tun:
Invoke-Sqlcmd ... | % {
New-Object -Type PSCustomObject -Property @{
"col1" = $_[0]
"col2" = $_[1]
"col3" = $_[2]
}
} | Export-Csv output.csv -NoTypeInformation
Ich habe allerdings keinen SQL-Server zur Hand, also mit Vorsicht genießen.