Export-Csv
oczekuje, że dane wejściowe będą obiektami. Wprowadzane ciągi znaków są traktowane jako obiekty ciągów, które mają tylko jedną właściwość (Length
), więc eksportowana jest tylko ta właściwość. Jeśli dane wejściowe to tablica ciągów znaków, musisz przekształcić ją w obiekt, np. tak:
$array = "foo", "bar", "baz"
New-Object -Type PSCustomObject -Property @{
"a" = $array[0]
"b" = $array[1]
"c" = $array[2]
} | Export-Csv output.csv -NoTypeInformation
Powyższe spowoduje utworzenie pliku output.csv
o następującej treści:
"c","a","b"
"baz","foo","bar"
Nazwy właściwości (a
, b
, c
) stają się nagłówkami CSV, wartościami właściwości (foo
, bar
, baz
) stają się wartościami CSV.
Jeśli twoje zapytanie SQL generuje listę tablic, prawdopodobnie będziesz musiał zrobić coś takiego:
Invoke-Sqlcmd ... | % {
New-Object -Type PSCustomObject -Property @{
"col1" = $_[0]
"col2" = $_[1]
"col3" = $_[2]
}
} | Export-Csv output.csv -NoTypeInformation
Nie mam jednak pod ręką serwera SQL, więc podejmij to z przymrużeniem oka.