web-dev-qa-db-ja.com

Powershell-System.Data.DataRowを文字列に解析します

SQLクエリからの出力をPowerShellで文字列に変換する方法についての入力が必要です。私は現在次のことをしています

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オブジェクトのコンテンツの文字列配列を作成するために必要なことを教えてください

13
infinity

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

DataRowを使用してItemArrayをオブジェクトの配列に変換してから、次のように「、」または任意の結合メソッドを介して結合できます。

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