14

PowerShell で SQL クエリからの出力を文字列に変換する方法について、ご意見をお聞かせください。私は現在、次のことを行っています

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

上記の関数を使用して、次のようなことを行う .sql ファイルを呼び出します。

SELECT Names FROM tblXXX

SQLストアドプロシージャを呼び出すために使用する実際のpowershellコードは次のとおりです

$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

$output オブジェクトのコンテンツの文字列配列を作成するには、何をする必要があるか教えてください。

4

1 に答える 1

20

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

DataRowを使用してオブジェクトの配列に変換し、次のItemArrayように、「、」または好みの結合方法で結合できます。

$formatOut = $formatOut + ($output[$i].ItemArray -join ",")
于 2012-10-18T00:02:23.773 に答える