Как использовать командлет Select-Xml для анализа XML из внешнего источника?

я пытаюсь использовать Select-Xmlдля разбора XML с SQL-сервера. У меня есть запрос sql, который дает мне строку XML ( $Query), и я хочу суммировать все значения «Пользователи» из этого XML.

Мой скрипт отлично работает, если я использую внешний файл для "". Но я не знаю, как использовать поместить строку XML в "".

Если я побегу Write-Host $pathя получаю просто сообщение "System.Data.DataRow"

Если я побегу echo $pathя получаю строку XML.

      $XPath = "//Users" # XML element
$total = 0 # Counter to sum up all Users elements

$Query = "SELECT [LicXML] FROM [SQLSERVER].[dbo].[Conf] WHERE Name='Lic'" # Query to get XML string
$path = Invoke-Sqlcmd -Query $Query -ServerInstance 'SQLSERVER' -Database SQLDB # Request to MSSQL

Select-Xml -Path $path -XPath $Xpath | ForEach-Object { $total += [int] $_.node.InnerXML }; # Parsing
Write-Host "total:" $total # Users sum

Я пробовал разные способы, но до сих пор понятия не имею. Не могли бы вы мне помочь, пожалуйста?

Скриншот результата

УПД. Я слишком тупой для этого места. Во-первых, я должен использовать флаг вместо -PathНо до сих пор не знаю, как поместить мою строку XML в -Content

УПД2. Я верю, что могу использовать $path = $path | Out-Stringчтобы поместить строку XML в мою переменную. Но теперь у меня другая проблема - как отрезать заголовок результата запроса? Поскольку это недопустимый XML, пока не будет представлен заголовок:

      Select-Xml : Cannot convert value "
LicXML                                                                                                                                                    
-------                                                                                                                                                    
<License ProductID="ICE"><Data Version="1.0" AuthenticationKeyID="PCApps">...
" to type "System.Xml.XmlDocument"

0 ответов

Другие вопросы по тегам