2011-07-19 24 views
1

在PowerShell中我有這樣的功能: 功能RunSQLServerQuery { 參數( [字符串] $服務器=, [字符串] $實例= $(扔「數據庫名稱「」是要求」), [字符串] $查詢, $參數= @ {} )PowerShell中的SQL Server數據表額外的 「行」

$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()」
$行= RunSQLServerQuery 「服務器名稱」, 「大師」 $ MyTest的@ {}
$行

我得到如下結果:
MemberType:方法
OverloadDefinitions :{System.Void打開()}
TypeNameOfValue:System.Management.Automation.PSMethod
值:System.Void打開()
名稱:打開
IsInstance:真

column1的:2011/7/19下午2時14分13秒

當我檢查的$的值離開的預期值的函數之前dt.Tables [0]:
column1的---- --- 7/19/2011 2:16:13 PM

我想不通這是爲什麼。我已經嘗試切換回回報,$ dt.Tables [0],但這是無濟於事。我無法弄清楚爲什麼PowerShell在從函數返回時添加此文本。必須有一些容易丟失的東西。

Boezo

回答

2

的問題是與線$connection.open

它應該閱讀[void]$connection.open()

你越來越開放的方法作爲輸出的一部分,而不是調用它。

+0

謝謝你做到了!我知道這是簡單的,我看不到:) – boezo