2012-10-17 33 views
12

SQLクエリからの出力をpowershellの文字列に変換する方法についてのご意見が必要です。私は現在、私はここでPowershell - パースSystem.Data.DataRowから文字列へ

SELECT Names FROM tblXXX 

のような何かをする.sqlファイルを呼び出すために、上記の関数を使用し、次の

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

をやっていることは、私はSQLストアドプロシージャを呼び出すために使用し、実際のP​​owerShellのコードです

$output = ExecuteFromScriptRowset $someDB (Resolve-Path '.\selectXXX.sql') 

出力は、文字列配列に変換する必要があるSystem.Data.DataRowの配列です。意図したとおり、私は現在、ここ

$formatOut = @() 

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

が動作していない、以下を実行しようとしていることは$ formatOutの出力は、forループの後であり、これは私が

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

探していたものではありません、あなたでした$出力オブジェクトの内容の文字列を作成するために私に何をする必要があるか教えてください

答えて

19

デフォルトではToStringがオブジェクトタイプを出力するので、表示されているものは完全に正常です。これは.NET仕様です。

あなたはItemArrayを使用してオブジェクトの配列にDataRowを変換し、その後経て参加する「」またはいずれかご希望の方法を参加し、このようなことができます。

$formatOut = $formatOut + ($output[$i].ItemArray -join ",") 
関連する問題