Как использовать командлет 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"