PowerShell возвращает все сообщения из SQL-запроса - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь запросить базу данных SQL и вернуть только созданные сообщения , результаты таблицы не важны.Я просмотрел несколько ответов в Интернете и придумал следующий код, но каждый раз, когда я выводил $message, он пуст.

Может кто-нибудь сказать мне, что я делаю не так, или если есть какой-тоскрытая проблема?

$server = 'SampleServer'
$sqlQuery = "print 'sample message';"
$sqlConnection = new-object System.Data.SqlClient.SqlConnection("Server=$server; Trusted_Connection=True;") 
$sqlConnection.FireInfoMessageEventOnUserErrors = $true

    #Listener for messages
$handler = [System.Data.SqlClient.SqlInfoMessageEventHandler]{$message = "$($_)"}
$sqlConnection.add_InfoMessage($handler)

     #tried using events, but it also didn't return anything. Assumed $Event was some system variable?
     #  Register-ObjectEvent -InputObject $sqlConnection -EventName InfoMessage -Action {$message = "$($Event.SourceEventArgs)"} -SupportEvent

     #run Query
$sqlConnection.Open()
$sqlCommand = $sqlConnection.CreateCommand()
$sqlCommand.CommandText = $SQLQuery
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter $sqlcommand
$dataset = New-Object System.Data.DataSet
$adapter.Fill($dataSet) | out-null

$sqlConnection.Close()
    #output $message results
write-host $message

Кроме того, я не могу использовать Invoke-SqlCommand.

РЕДАКТИРОВАТЬ Так что, после еще немного повозиться с кодом, на самом деле нетпроблема с этим, но есть проблема с тем, как сообщение запроса возвращается из блока $handler.Если я добавлю write-host в блок $handler, он будет работать нормально, но мне понадобится информация позже в моем скрипте.Я пробовал эти решения безрезультатно (также добавил return $message к $handler):

$message = $sqlConnection.add_InfoMessage($handler) #nothing returned
$sqlConnection.add_InfoMessage($message = $handler) #just plain wrong

Есть ли правильное место для размещения назначения в этой ситуации?

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