Как отобразить содержимое XML из таблицы sql PowerShell? - PullRequest
0 голосов
/ 04 августа 2011

Что мне нужно сделать: 1, запросить строку xml с сервера данных SQL.См. Рис. Ниже, строка с именем StageDesc содержимого XML-файла.

The Row named StageDesc contents xml file

2, файл XML содержит путь //sharespace/test1/10.0.1212.0, который мне нужно получить, он формировался как<releasepath>//sharespace/test1/10.0.1212.0</releasepath> в XML-файле.

Вот мои коды, которые пытаются его получить:

$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

$SqlCmd.Connection = $Connection

$DBResult = $sqlcmd.ExecuteReader()

$DataTable = New-Object system.data.datatable

$DataTable.load($DBResult)

foreach ($StageDesc in $DataTable) {

[XML]$ReturnedXML=$StageDesc.releasepath

}

Код передан, но ничего не возвращен.Почему это случилось?Кто-нибудь может мне помочь?

Ответы [ 3 ]

2 голосов
/ 04 августа 2011

Вы присваиваете свои XML-данные переменной $ RetrunedXML и перезаписываете назначение на каждой итерации вашего foreach.Вы проверяли $ ReturnedXML?

Используя пример базы данных для SQL Server 2008, я могу использовать это:

$serverName = "$env:computername\sql1"
$databaseName = "AdventureWorks"
$query = "SELECT * from Person.Contact where AdditionalContactInfo IS NOT NULL"
$conn=new-object System.Data.SqlClient.SQLConnection
$connString = “Server=$serverName;Database=$databaseName;Integrated Security=SSPI;”
$conn.ConnectionString=$connString
$conn.Open()
$cmd=new-object system.Data.SqlClient.SqlCommand($Query,$conn)
$da = New-Object “System.Data.SqlClient.SqlDataAdapter” ($cmd)
$dt = New-Object “System.Data.DataTable”
$da.fill($dt) | out-null
$conn.Close()

$dt | foreach {[xml]$ReturnedXML = $_.AdditionalContactInfo; $ReturnedXML}
0 голосов
/ 27 июля 2016
$da.fill($dt)

Загружает результаты запроса в DataTable $ dt.

$dt | Out-GridView

Показывает все данные.

Сценарий отлично работал для меня (кроме последней строки, которая неПодать заявку на мое дело).

0 голосов
/ 04 августа 2011

Все, что вы делаете в коде - это объявление и присвоение переменных. Там нет кода, который выводит или отображает что-либо. Вы также не возвращаете ни одной переменной. Так что вы ожидаете, что код должен вернуть? В какой строке? Вы даже пытались отладить код?

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