Почему этот код PowerShell возвращает только один результат, если у меня есть несколько результатов? - PullRequest
0 голосов
/ 15 июня 2019

Я выполняю запрос через powershell.Я знаю, у меня есть несколько результатов от выполнения запроса через ssms.Почему переменная имеет только один результат в powershell?

Я использовал много методов для выполнения этого запроса, и, наконец, он заработал, но не могу получить все результаты запроса.

[string] $Server= "mochqdb01";
[string] $Database = "MoCApp.Models.Item+ItemDBContext";
[string] $SQLQuery= $("Select smEmail from Items where DateRequested >= dateadd(day,datediff(day,1,GETDATE()),0)");

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$Server;Database=$Database;Integrated Security=True"
$SqlConnection.Open()
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SQLQuery
$SqlCmd.Connection = $SqlConnection
$dbname = $SqlCmd.ExecuteScalar()
$SqlConnection.Close()
Write-output "Database is " $dbname

Вывод: База данных Franziew@marketyyo.com

Должно иметь несколько результатов.Должен ли я сохранить в массив?

Я действительно хочу сохранить результаты в этом формате.

Send-ToEmail -email "js@marketyyo.com", "mb@marketyyo.com"; Возможно ли это?

1 Ответ

1 голос
/ 15 июня 2019

ExecuteScalar () возвращает первый столбец первой строки первого набора результатов. Вам нужно ExecuteReader () . EG

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$Server;Database=$Database;Integrated Security=True"
$SqlConnection.Open()
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SQLQuery
$SqlCmd.Connection = $SqlConnection
$rdr = $SqlCmd.ExecuteReader()
while ($rdr.Read())
{
   $smMail = $rdr[0]
   write-output "email is $smMail"
}
$rdr.Close()
$SqlConnection.Close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...