Итак, я пишу скрипт для выполнения простых запросов xmlrpc.Насколько я могу судить, в Powershell ничего встроенного нет, поэтому лучшее и простое решение, которое я нашел, - это просто создать xml и опубликовать его с помощью invoke-webrequest или invoke-restmethod.
Есликто-то знает о лучшем способе использования готовых функций, не стесняйтесь обучать меня.
Теперь вот часть, с которой у меня возникли некоторые проблемы.Генерация XML.Как бы я хотел, чтобы это работало: создать собственный объект, добавить свойства, преобразовать в xml и опубликовать.Еще лучше было бы создать xml-объект, добавить узлы и свойства, а затем опубликовать его.
Хотя это кажется чем-то вроде PITA, и на данный момент я чувствую, что будет легче лечитьXML как строка в Powershell и редактируйте / управляйте таким образом.Итак, я что-то упустил или работаю с xml в Powershell не так просто, как я надеялся?
Редактировать: Чтобы уточнить, я прошу выбрать лучший инструмент / технику для создания собственного xml в Powershell.Пока что у меня сложилось впечатление, что лучший способ - это просто построить его как строку, так как использование встроенных инструментов xml громоздко и грязно.Однако я понимаю, что это не было бы жизнеспособным для больших или более сложных XML-структур.
То, что у меня есть, не работает и не так красиво, как хотелось бы.Этот код дает мне следующую ошибку
Ошибка вызова метода, поскольку [System.String] не содержит метод с именем 'Appendchild'.
$xmlreq = [xml]@'
<?xml version="1.0"?>
<methodCall>
<methodName>methodname</methodName>
</methodCall>
'@
$child = $xmlreq.CreateElement("params")
$xmlreq.methodCall.Appendchild($child)
$child = $xmlreq.CreateElement("param")
$xmlreq.methodCall.params.Appendchild($child)
$child = $xmlreq.CreateElement("value")
$xmlreq.methodCall.params.param.Appendchild($child)
$child = $xmlreq.CreateElement("string")
$xmlreq.methodCall.params.param.value.Appendchild($child)
$xmlreq.methodCall.params.param.value.string = "value"
Как должен выглядеть получившийся XML:
<?xml version="1.0"?>
<methodCall>
<methodName>methodname</methodName>
<params>
<param>
<value>
<string>param1</string>
</value>
</param>
<param>
<value>
<string>param2</string>
</value>
</param>
<param>
<value>
<string>param3</string>
</value>
</param>
<param>
<value>
<string>param4</string>
</value>
</param>
<param>
<value>
<struct>
<member>
<name>property1</name>
<value>
<int>0</int>
</value>
</member>
<member>
<name>property2</name>
<value>
<string>value</string>
</value>
</member>
<member>
<name>property3</name>
<value>
<int>1</int>
</value>
</member>
<member>
<name>property4</name>
<value>
<string>value</string>
</value>
</member>
<member>
<name>property5</name>
<value>
<int>2</int>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>