Export-Csv
verwacht dat de invoer objecten zijn. Stringinvoer wordt beschouwd als stringobjecten, die slechts één eigenschap hebben (Length
), dus alleen deze eigenschap wordt geëxporteerd. Als uw invoer een reeks tekenreeksen is, moet u er een object van maken, b.v. zoals dit:
$array = "foo", "bar", "baz"
New-Object -Type PSCustomObject -Property @{
"a" = $array[0]
"b" = $array[1]
"c" = $array[2]
} | Export-Csv output.csv -NoTypeInformation
Het bovenstaande zou een bestand maken output.csv
met de volgende inhoud:
"c","a","b"
"baz","foo","bar"
De eigenschapsnamen (a
, b
, c
) worden de CSV-headers, de eigenschapswaarden (foo
, bar
, baz
) worden de CSV-waarden.
Als uw SQL-query een lijst met arrays genereert, moet u waarschijnlijk zoiets als dit doen:
Invoke-Sqlcmd ... | % {
New-Object -Type PSCustomObject -Property @{
"col1" = $_[0]
"col2" = $_[1]
"col3" = $_[2]
}
} | Export-Csv output.csv -NoTypeInformation
Ik heb echter geen SQL-server bij de hand, dus neem het met een korreltje zout.