PowerShell SQL Server Datatable额外的“行”

时间:2011-07-19 19:25:54

标签: powershell

在PowerShell中我有这个功能: 函数RunSQLServerQuery {     param(         [string] $ server =“。”,         [string] $ instance = $(抛出“数据库名称是必需的”),         [字符串] $查询,         $参数= @ {}     )

$connection = new-object system.data.sqlclient.sqlconnection( `
    “Data Source=$server;Initial Catalog=$instance;Integrated Security=TRUE;”);
$connection.Open
$cmd=new-object system.Data.SqlClient.SqlCommand($query,$connection)
foreach($p in $parameters.Keys)
{
    [Void] $cmd.Parameters.AddWithValue("@$p",$parameters[$p])
}
$dt=New-Object system.Data.DataSet
$da=New-Object system.Data.SqlClient.SqlDataAdapter($cmd)
$da.fill($dt) | Out-Null

return $dt.Tables[0]

}

当我这样称呼时:
$ MyTest =“选择GetDate()”
$ rows = RunSQLServerQuery“servername”“master”$ MyTest @ {}
$行

我得到以下结果:
MemberType:方法
OverloadDefinitions:{System.Void Open()}
TypeNameOfValue:System.Management.Automation.PSMethod
值:System.Void Open()
名称:打开
IsInstance:真实的
第1栏:2011年7月19日下午2:14:13

当我在退出函数之前检查$ dt.Tables [0]的值时,值是预期的:
Column1 ------- 7/19/2011 2:16:13 PM

我无法弄清楚为什么会这样。我已经尝试将返回切换为 return,$ dt.Tables [0] ,但这无济于事。我无法弄清楚为什么PowerShell在从函数返回时添加此文本。我必须要有一些容易的东西。

Boezo

1 个答案:

答案 0 :(得分:2)

问题在于行$connection.open

应该阅读[void]$connection.open()

您将open方法作为输出的一部分而不是调用它。