PowerShell SQL Server Datatable дополнительная «строка» - PullRequest
1 голос
/ 19 июля 2011

В PowerShell у меня есть эта функция: функция RunSQLServerQuery {param ([строка] $ server = «.», [Строка] $ 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 = "select GetDate ()"
$ lines = RunSQLServerQuery "имя_сервера"«мастер» $ MyTest @ {}
$ строк

Я получаю следующие результаты:
MemberType: Method
OverloadDefinitions: {System.Void Open ()}
TypeNameOfValue: System.Management.Automation.PSMethod
Значение: System.Void Open ()
Имя: открыто
IsInstance: True

Столбец 1: 19.07.2011 2:14:13PM

Когда я проверяю значение $ dt.Tables [0] перед выходом из функции, это значение, как и ожидалось:
Столбец1 ------- 19.07.2011 2:16:13:00

Я не могу понять, почему это так.Я попытался переключить возврат на return, $ dt.Tables [0] , но это было безрезультатно.Я не могу понять, почему PowerShell добавляет этот текст при возврате из функции.Должно быть что-то простое, чего мне не хватает.

Boezo

1 Ответ

2 голосов
/ 19 июля 2011

Проблема со строкой $connection.open

Она должна выглядеть следующим образом: [void]$connection.open()

Вы получаете метод open как часть вашего вывода вместо его вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...