Графический интерфейс Powershell не возвращает результаты SQL-запроса

#powershell #user-interface

Вопрос:

Я создаю простой графический интерфейс, в котором сотрудники службы поддержки могут просматривать основную информацию о пользователе. Графический интерфейс должен извлекать эти данные из базы данных SQL, но при нажатии кнопки ничего не происходит.

     function SQLquery {
    param (
        [Parameter(Mandatory = $true)]
        [ValidateSet('NemOrgDB')]
        [string]
        $System,
        [string]
        $Query
    )

    switch ($System) {
        NemOrgDB { $ConnectionString = 'Place holder for Stack Overflow' }
    }

    #New SqlConnection object
    $sqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $sqlConnection.ConnectionString = $ConnectionString
    $sqlConnection.Open()

    #New Sqlcommand object
    $sqlCommand = New-Object System.Data.SqlClient.SqlCommand
    $sqlCommand.Connection = $sqlConnection
    $sqlCommand.CommandText = $Query

    #Create new sqldataadapter object
    $sqlDataAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
    $sqlDataAdapter.SelectCommand = $sqlCommand

    #Create new dataset object
    $DataSet = New-Object System.Data.DataSet

    #Fill dataset with dataadapter input
    try {
        $sqlDataAdapter.Fill($DataSet) | Out-Null 
        $output = $DataSet.Tables
    }
    catch {
        $output = $null
    }

    #Close sql connection
    $sqlConnection.close()
    $null = $sqlConnection
    $output
}
 

Вот используемая функция:

 #Søgnigns criteria
$EmployeeID = Read-Host -Prompt "What user to find?"

#SQL Query
SQLquery -System NemOrgDB -Query "Select [medarbejder_wnr] 
,[navn]
,[stilling] 
,[stilling_nr] 
,[firmakode_txt]
FROM [PersonData_NemOrg].[dbo].[Personale]
WHERE medarbejder_wnr ='$EmployeeID';" 
 

2 части кода работают так, как должны работать в консольной среде без подключенного графического интерфейса, они возвращают следующие результаты:
EmployeeID: EmployeeID
Имя: Имя
Роль: ИТ-поддержка
Номер роли : Номер
fimakode_txt : Компания


Когда один и тот же код выполняется внутри графического интерфейса, ничего не происходит, вот код графического интерфейса:

 #ButtonSearch
#
$ButtonSearch.BackColor = [System.Drawing.SystemColors]::ActiveBorder
$ButtonSearch.FlatStyle = [System.Windows.Forms.FlatStyle]::System
$ButtonSearch.Font = (New-Object -TypeName System.Drawing.Font -ArgumentList @([System.String]'Tahoma',[System.Single]9,[System.Drawing.FontStyle]::Bold,[System.Drawing.GraphicsUnit]::Point,([System.Byte][System.Byte]0)))
$ButtonSearch.Location = (New-Object -TypeName System.Drawing.Point -ArgumentList @([System.Int32]12,[System.Int32]118))
$ButtonSearch.Name = [System.String]'ButtonSearch'
$ButtonSearch.Size = (New-Object -TypeName System.Drawing.Size -ArgumentList @([System.Int32]150,[System.Int32]23))
$ButtonSearch.TabIndex = [System.Int32]24
$ButtonSearch.Text = [System.String]'Search'
$ButtonSearch.UseCompatibleTextRendering = $true
$ButtonSearch.UseVisualStyleBackColor = $false
$ButtonSearch.add_Click($ButtonSearch_Click)
#
 

и

 $ButtonSearch_Click = {
    $Wnummer = $TextBoxWnummer1.Text
    SQLquery -System NemOrgDB -Query "Select [medarbejder_wnr] 
    ,[navn]
    ,[stilling] 
    ,[stilling_nr] 
    ,[firmakode_txt]
    FROM [PersonData_NemOrg].[dbo].[Personale]
    WHERE medarbejder_wnr ='$Wnummer';" 

}
 

Он просто ничего не возвращает.

Комментарии:

1. Где $ButtonSearch_Click() предполагается записать его вывод?

2. @vonPryz Он должен просто выводиться в консоль. Я пытался вывести его в csv, но все равно ничего.