2014-03-28 75 views
4

我正在調用一個函數來查詢一個SQL表。我只需要一個單元格的結果。 我無法成功地從函數中將單元格數據檢索到變量中。Powershell SQL SELECT輸出到變量

例如,如果我有如下表:

FeedID Name Address 
    15  Bill Jones 

我需要捕捉「15」的FeedID值到一個變量。 我的SQL語句只捕獲FeedID,但我不知道如何提取價值

這是我到目前爲止有:

function Invoke-SQL { 
    param(
    [string] $dataSource = "10.0.100.1", 
    [string] $database = "Database123", 
    [string] $sqlCommand = $("SELECT [FeedID] FROM [dbo].[FeedList] WHERE [FeedFileName] = 'filename.txt'") 
    ) 

    $connectionString = "Data Source=$dataSource; " + "Integrated Security=SSPI; " + "Initial Catalog=$database" 
    $connection = new-object system.data.SqlClient.SQLConnection($connectionString) 
    $command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection) 
    $connection.Open() 

    $adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command 
    $dataset = New-Object System.Data.DataSet 
    write-output $adapter.Fill($dataSet) | Out-Null 

    $connection.Close() 
    $dataSet.Tables 
    } 

    $FeedID = Invoke-SQL 
    $FeedID 
+0

執行後'$ FeedID'的內容是什麼? –

+0

FeedID和數字15 – GreetRufus

回答

9

另外,您可以使用下面的代碼,如果你以後尋找簡單的返回值,而不是表進行處理。

[string] $Server= "10.0.100.1", 
[string] $Database = "Database123", 
[string] $SQLQuery= $("SELECT [FeedID] FROM [dbo].[FeedList] WHERE [FeedFileName] = 'filename.txt'") 

function GenericSqlQuery ($Server, $Database, $SQLQuery) { 
    $Connection = New-Object System.Data.SQLClient.SQLConnection 
    $Connection.ConnectionString = "server='$Server';database='$Database';trusted_connection=true;" 
    $Connection.Open() 
    $Command = New-Object System.Data.SQLClient.SQLCommand 
    $Command.Connection = $Connection 
    $Command.CommandText = $SQLQuery 
    $Reader = $Command.ExecuteReader() 
    while ($Reader.Read()) { 
     $Reader.GetValue($1) 
    } 
    $Connection.Close() 
} 
+0

輝煌。完美的作品!謝謝。 – GreetRufus

1

它看起來像$ FeedID(你把變量SQL輸出中)應該有一個FeedID屬性(來自單行返回)。

試試這個:

$FeedID.FeedID