关于如何使用 powershell 从 sql 数据库显示表内容的问题

关于如何使用 powershell 从 sql 数据库显示表内容的问题

我正在编写一个脚本,目的是从 SQL 数据库中获取一些正在运行的编译过程的信息。

如果我在 SQL Server 中运行以下行作为查询

 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 Server 一无所知。有人想知道怎么做吗?如何使用 powershell 获取 xml 部分?

答案1

我经常做这种事。不是 XML 部分,而是通过 Powershell 从 SQL 中提取数据。

$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)
}

相关内容