Export-Csv
s'attend à ce que l'entrée soit des objets. L'entrée de chaîne est considérée comme des objets de chaîne, qui n'ont qu'une seule propriété (Length
), seule cette propriété est donc exportée. Si votre entrée est un tableau de chaînes, vous devez en faire un objet, par ex. comme ceci :
$array = "foo", "bar", "baz"
New-Object -Type PSCustomObject -Property @{
"a" = $array[0]
"b" = $array[1]
"c" = $array[2]
} | Export-Csv output.csv -NoTypeInformation
Ce qui précède créerait un fichier output.csv
avec le contenu suivant :
"c","a","b"
"baz","foo","bar"
Les noms de propriété (a
, b
, c
) sont devenus les en-têtes CSV, les valeurs de propriété (foo
, bar
, baz
) deviennent les valeurs CSV.
Si votre requête SQL génère une liste de tableaux, vous devrez probablement faire quelque chose comme ceci :
Invoke-Sqlcmd ... | % {
New-Object -Type PSCustomObject -Property @{
"col1" = $_[0]
"col2" = $_[1]
"col3" = $_[2]
}
} | Export-Csv output.csv -NoTypeInformation
Cependant, je n'ai pas de serveur SQL à portée de main, alors prenez avec un grain de sel.