Powershell - 将System.Data.DataRow解析为String

时间:2012-10-17 23:13:50

标签: string powershell 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对象内容的字符串数组

1 个答案:

答案 0 :(得分:20)

您所看到的是完全正常的,因为默认情况下ToString将输出对象类型。这是根据.NET规范。

您可以使用DataRowItemArray转换为对象数组,然后通过“,”或您喜欢的任何联接方式加入,如下所示:

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