SQLテーブルを照会する関数を呼び出しています。 1つのセルの結果だけが必要です。関数から変数にセルデータを正常に取得できません。
たとえば、次のようなテーブルがある場合:
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
あるいは、後で処理するためにテーブルではなく単純な戻り値を探している場合は、次のコードを使用できます。
[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()
}
$ FeedID(SQL出力を入れる変数)にはFeedIDプロパティ(返された単一の行から)があるはずです。
これを試して:
$FeedID.FeedID