Export-Csv
espera que a entrada seja objetos. A entrada String é considerada como objetos string, que possuem apenas uma propriedade (Length
), então apenas esta propriedade é exportada. Se sua entrada é uma matriz de strings, você precisa transformá-la em um objeto, por exemplo. assim:$array = "foo", "bar", "baz"
New-Object -Type PSCustomObject -Property @{
"a" = $array[0]
"b" = $array[1]
"c" = $array[2]
} | Export-Csv output.csv -NoTypeInformation
O acima criaria um arquivo
output.csv
com o seguinte conteúdo:"c","a","b"
"baz","foo","bar"
Os nomes das propriedades (
a
, b
, c
) se tornam os cabeçalhos CSV, os valores das propriedades (foo
, bar
, baz
) tornam-se os valores CSV. Se sua consulta SQL gerar uma lista de arrays, você provavelmente terá que fazer algo assim:
Invoke-Sqlcmd ... | % {
New-Object -Type PSCustomObject -Property @{
"col1" = $_[0]
"col2" = $_[1]
"col3" = $_[2]
}
} | Export-Csv output.csv -NoTypeInformation
Eu não tenho um servidor SQL em mãos, portanto, tome com um grão de sal.