Export-Csv
forventer, at input er objekter. Strenginput betragtes som strengobjekter, der kun har én egenskab (Length
), så kun denne egenskab eksporteres. Hvis dit input er en række strenge, skal du lave det til et objekt, f.eks. sådan her:
$array = "foo", "bar", "baz"
New-Object -Type PSCustomObject -Property @{
"a" = $array[0]
"b" = $array[1]
"c" = $array[2]
} | Export-Csv output.csv -NoTypeInformation
Ovenstående ville skabe en fil output.csv
med følgende indhold:
"c","a","b"
"baz","foo","bar"
Egenskabsnavnene (a
, b
, c
) bliver til CSV-headerne, egenskabsværdierne (foo
, bar
, baz
) bliver CSV-værdierne.
Hvis din SQL-forespørgsel genererer en liste over arrays, bliver du sandsynligvis nødt til at gøre noget som dette:
Invoke-Sqlcmd ... | % {
New-Object -Type PSCustomObject -Property @{
"col1" = $_[0]
"col2" = $_[1]
"col3" = $_[2]
}
} | Export-Csv output.csv -NoTypeInformation
Jeg har dog ikke en SQL-server ved hånden, så tag det med et gran salt.