Подтвердить что ты не робот

Powershell - Parse System.Data.DataRow для строки

Мне нужны ваши данные о том, как преобразовать вывод из SQL-запроса в строку в powershell. В настоящее время я делаю следующее

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

Я использую вышеуказанную функцию для вызова файла .sql, который делает что-то вроде

SELECT Names FROM tblXXX

Вот фактический код powershell, который я использую для вызова хранимой в SQL proc

$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

4b9b3361

Ответ 1

То, что вы видите, совершенно нормально, потому что по умолчанию ToString выводит тип объекта. Это соответствует спецификациям .NET.

Вы можете преобразовать DataRow в массив объекта с помощью ItemArray, а затем присоединиться через "," или какой бы метод соединения вы предпочитаете, например:

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