Export-Csv
si aspetta che l'input sia oggetti. L'input stringa è considerato come oggetti stringa, che hanno una sola proprietà (Length
), quindi viene esportata solo questa proprietà. Se il tuo input è un array di stringhe, devi trasformarlo in un oggetto, ad es. così:
$array = "foo", "bar", "baz"
New-Object -Type PSCustomObject -Property @{
"a" = $array[0]
"b" = $array[1]
"c" = $array[2]
} | Export-Csv output.csv -NoTypeInformation
Quanto sopra creerebbe un file output.csv
con il seguente contenuto:
"c","a","b"
"baz","foo","bar"
I nomi delle proprietà (a
, b
, c
) diventano le intestazioni CSV, i valori delle proprietà (foo
, bar
, baz
) diventano i valori CSV.
Se la tua query SQL genera un elenco di array, probabilmente dovrai fare qualcosa del genere:
Invoke-Sqlcmd ... | % {
New-Object -Type PSCustomObject -Property @{
"col1" = $_[0]
"col2" = $_[1]
"col3" = $_[2]
}
} | Export-Csv output.csv -NoTypeInformation
Tuttavia, non ho un server SQL a portata di mano, quindi prendilo con le pinze.