2012-10-17 17 views
12

Ich brauche Ihre Eingaben, wie Sie die Ausgabe von einer SQL-Abfrage in eine Zeichenfolge in Powershell konvertieren. Ich bin derzeit dabei die folgendenPowershell - Parse System.Data.DataRow zu String

function ExecuteFromScriptRowset($connectionParams, $file) 
{ 
    return (invoke-sqlcmd @connectionParams 
      -inputFile $file -MaxCharLength 8000000) 
} 

ich die obige Funktion verwenden, um eine SQL-Datei aufzurufen, die etwas tut, wie

SELECT Names FROM tblXXX 

Hier ist der eigentliche Code Powershell, dass ich die gespeicherte SQL-Prozedur verwenden, um aufrufen

Die Ausgabe ist ein Array von System.Data.DataRow, die ich in ein String-Array konvertieren muss. Ich bin derzeit die folgenden Versuch aus, die nicht wie vorgesehen arbeitet

$formatOut = @() 

for ($i=0; $i -le $output.Length; $i++) 
{ 
    $formatOut = $formatOut + [string]$output[$i] 
} 

Hier ist die Ausgabe von $ formatOut ist nach der for-Schleife, und das ist nicht das, was ich suchte

$formatOut[0] = System.Data.DataRow 
$formatOut[1] = System.Data.DataRow 
$formatOut[2] = System.Data.DataRow 

Könnten Sie Bitte lassen Sie mich wissen, was ich tun muss, damit ich ein String-Array des Inhalts des $ output-Objekts erstellen

Antwort

19

Was Sie sehen, ist völlig normal, weil standardmäßig ToString Objekttyp ausgeben wird. Dies ist per .NET-Spezifikationen.

Sie ein DataRow zu Array von Objekt konvertieren kann ItemArray verwenden, und dann kommen Sie über „“ oder je nachdem, welcher Joinmethode Sie bevorzugen, wie folgt aus:

$formatOut = $formatOut + ($output[$i].ItemArray -join ",")