Powershell Send-XmlRcpRequest 的 Hello World?

Hello World for Powershell Send-XmlRcpRequest?

想要output类似的东西:

<?xml version="1.0"?>
<methodResponse>
  <params>
    <param>
        <value><string>South Dakota</string></value>
    </param>
  </params>
</methodResponse>

如何使用 xml-rpc powershell 查看响应?

也许可以将 resultbaidu “猫”或以某种方式通过管道传输到将打印它的东西?或者,把它放到一个对象中?

PS /home/nicholas/powershell> 
PS /home/nicholas/powershell> Send-XmlRpcRequest -Url "http://ping.baidu.com/ping/RPC2" -MethodName "weblogUpdates.extendedPing" -Params @('jdon')                             

xml                            methodResponse
---                            --------------
version="1.0" encoding="UTF-8" methodResponse

PS /home/nicholas/powershell> 

或更完整的请求:

Send-XmlRpcRequest -Url "http://ping.baidu.com/ping/RPC2" -MethodName "weblogUpdates.extendedPing" -Params @('jdon','http://www.jdon.com/','http://www.jdon.com/47686','http://www.jdon.com/rss')  

生成类似的结果。东西 like:

$http = New-Object Chilkat.Http

$xmlReq = "<?xml version=`"1.0`"?><methodCall><methodName>demo.sayHello</methodName><params /></methodCall>"

$xmlResponse = $http.XmlRpc("http://www.cknotes.com/xmlrpc.php",$xmlReq)
if ($http.LastMethodSuccess -ne $true) {
    $($http.LastErrorText)
    exit
}

$($xmlResponse)

除了 this 模块,响应在哪里?

所以您的问题实际上是 “如何将 xml 文档转换为格式良好且可读的字符串” - 答案可能类似于这个:

function Convert-XmlToString
{
  param(
    [Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
    [xml]$Xml
  )

  begin {
    # Create formatting settings
    $writerSettings = [System.Xml.XmlWriterSettings]@{Indent = $true; OmitXmlDeclaration = $true}

    # Create StringBuilder
    $stringBuilder = [System.Text.StringBuilder]::new()
  }

  process {
    try {
      # Create XmlWriter
      $xmlWriter = [System.Xml.XmlTextWriter]::Create($stringBuilder, $writerSettings)

      # Write xml document to XmlWriter
      $xml.WriteContentTo($xmlWriter)

      # Flush XmlWriter to output target (ie. the stringbuilder)
      $xmlWriter.Flush()

      # Output resulting string
      $stringBuilder.ToString()
    }
    finally{
      # Clean up
      $xmlWriter.Dispose()
      $stringBuilder = $stringBuilder.Clear()
    }
  }
}

您应该可以使用它来执行以下操作:

PS C:\> $xmlRPCResponse = Send-XmlRpcRequest -Url "http://ping.baidu.com/ping/RPC2" -MethodName "weblogUpdates.extendedPing" -Params @('jdon','http://www.jdon.com/','http://www.jdon.com/47686','http://www.jdon.com/rss')  
PS C:\> $xmlRPCResponse |Convert-XmlToString
<methodResponse>
  <params>
    <param>
        <value><string>South Dakota</string></value>
    </param>
  </params>
</methodResponse>

这很接近:

PS /home/nicholas> 
PS /home/nicholas> $xmlRPCResponse = Send-XmlRpcRequest -Url "http://ping.baidu.com/ping/RPC2" -MethodName "weblogUpdates.extendedPing" -Params @('jdon','http://www.jdon.com/','http://www.jdon.com/47686','http://www.jdon.com/rss')  
PS /home/nicholas> 
PS /home/nicholas> $xmlRPCResponse | ConvertTo-Xml -As String                                                                       <?xml version="1.0" encoding="utf-8"?>                                                              
<Objects>
  <Object Type="System.Xml.XmlDocument">System.Xml.XmlDocument</Object>
</Objects>
PS /home/nicholas> 

虽然不是很理想的输出。

感谢 Mathias,请参阅:

Powershell: Convert XML to String


更好的结果:

PS /home/nicholas> 
PS /home/nicholas> $xmlRPCResponse.OuterXml                  
<?xml version="1.0" encoding="UTF-8"?><methodResponse><params><param><value><int>0</int></value></param></params></methodResponse>
PS /home/nicholas> 

虽然是个无用的例子。似乎有效。