我正在使用Powershell Core 6.2.2,并具有以下功能:
function New-JobElement() {
Param(
[Parameter()]
[String]
$Name,
# This parameter does nothing yet... Planned for future use
[Parameter()]
[String]
$Value
)
[xml] $xml = New-Object Xml.XmlDocument
[System.Xml.XmlElement] $element = $xml.CreateElement("job", $Name, "my.job.uri")
if ($null -ne $Value) {
$element.AppendChild($xml.CreateTextNode($Value))
}
return $element
}
当我调用该函数时,返回的对象似乎是System.Object[]
而不是预期的对象。
$foo = New-JobElement -Name "foo" -Value "bar"
Write-Host $foo.getType()
这会将以下内容写出到控制台:
是公共的 是序列号基本类型 -------- -------- ---- -------- True True Object[] System.Array
因此,我无法将此结果传递给类似XMLDocument.AppendChild()
.
为什么类型会发生变化,如何让此功能按我想要的方式工作?(即返回 XMLElement)。
更新:如何获取此函数以返回$element
?
这个:
$element.AppendChild($xml.CreateTextNode($Value))
返回新追加的节点。
$foo
确实是一个数组,由AppendChild()
发出的节点和您返回的$element
组成