Назад | Перейти на главную страницу

Вопрос о том, как отобразить содержимое таблицы с помощью powershell из базы данных sql

Я пишу сценарий с целью получить некоторую информацию о запущенном процессе выполнения из базы данных sql.

Если бы я запустил следующую строку как запрос на сервере sql

 SELECT Stage.Description as StageDesc,Stage.StageStatusId FROM [Build].[dbo].[WorkflowInstance_View] as Build join [Build].[dbo].[Stage_View] as Stage on Build.Id=Stage.[WorkflowInstanceId]where Stage.ParentId is null and Stage.StageStatusId <>4 and Stage.StageStatusId <>7 order by Build.Id desc 

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

Теперь вот мои коды от PowerShell, я стремился получить часть xml:

$connection= new-object system.data.sqlclient.sqlconnection
$Connection.ConnectionString ="server=SQLShare;database=Build;trusted_connection=True"
$connection.open()

$SqlCmd = New-Object System.Data.SqlClient.SqlCommand

$SqlQuery = "SELECT Stage.Description as StageDesc,Stage.StageStatusId FROM [Build].[dbo].[WorkflowInstance_View] as Build join [Build].[dbo].[Stage_View] as Stage on Build.Id=Stage.[WorkflowInstanceId]where Stage.ParentId is null and Stage.StageStatusId <>4 and Stage.StageStatusId <>7 order by Build.Id desc"
$SqlCmd.CommandText = $SqlQuery
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$SqlCmd.Connection = $Connection
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet) 
$Connection.Close()

но в результате появилось только «2», это номер текущего запущенного процесса.

Поскольку я ооочень игнорирую sql-сервер. Может ли какой-нибудь орган узнать, как это сделать? Как я могу получить часть xml с помощью PowerShell?

Я делал такие вещи довольно часто. Не часть XML, а извлечение данных из SQL через Powershell.

$SqlQuery = "SELECT Thing, Item, FROM Tablename WHERE (Item < "5")"
$SqlCmd.CommandTest=$SqlQuery
$DBResult = $DBComand.ExecuteReader()
$DataTable = New-Object system.data.datatable
$DataTable.load($DBResult)

Теперь у вас есть объект типа Datatable, который нужно проанализировать.

foreach ($Row in $DataTable) {
    [XML]$ReturnedXML=$Row.Thing()
    DoSomethingWithXML($ReturnedXML)
}