我尝试通过函数调用传递System.XML.XMLDocument
对象,但在函数调用后该对象更改为System.Object[]
。
更具体地说,我有这样的功能:
function GenerateXml()
{
[System.XML.XMLDocument]$xmlDoc=New-Object System.XML.XMLDocument
$declaration = $xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "yes")
$xmlDoc.AppendChild($declaration)
[System.XML.XMLElement]$root = $xmlDoc.CreateElement("dummy")
$root.SetAttribute("Name", "dummy value")
$xmlDoc.AppendChild($root)
$xmlDoc
}
[System.XML.XMLDocument]$xmlDoc = GenerateXml
这将输出如下错误:
Cannot convert value "System.Object[]" to type "System.Xml.XmlDocument".
那么通过函数调用传递XMLDocument的最佳方法是什么?
答案 0 :(得分:0)
结果表明Powershell会将方法的所有输出都返回给数组。要获得实际的返回值,您可以获取输出数组的最后一个成员,也可以不输出除实际需要之外的任何其他内容。
答案 1 :(得分:0)
您的后续响应“将方法输出到数组”是正确的,但可以避免。在您的示例中,您使用.AppendChild()方法,该方法本身可以产生输出,因此可以作为数组中的对象产生Return值。可以避免这种情况,因为
$xmlDoc.AppendChild($root) | Out-Null