我需要您有关如何将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]
}
这是 for 循环之后$formatOut输出,这不是我想要的
$formatOut[0] = System.Data.DataRow
$formatOut[1] = System.Data.DataRow
$formatOut[2] = System.Data.DataRow
您能否让我知道我需要做什么,以便我创建一个$output对象内容的字符串数组
你所看到的是完全正常的,因为默认情况下ToString
将输出对象类型。这是根据 .NET 规范。
您可以使用 ItemArray
将DataRow
转换为对象数组,然后通过 "," 或任何您喜欢的连接方法进行连接,如下所示:
$formatOut = $formatOut + ($output[$i].ItemArray -join ",")