PowerShell - XML - 将多个元素附加到远程桌面连接管理器文件中的节点
PowerShell - XML - Append Multiple Elements to Node in Remote Desktop Connection Manager File
$xmlFrag = $NewXMLNode.innerXml
Cannot convert argument "0", with value:
"<removed for ease of reading>" value of type "System.String" to type "System.Xml.XmlNode"."
At line:1 char:1
+ $node.AppendChild($xmlFrag)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument
有人知道如何修复此错误吗?或者是否有比我正在使用的方法更好的在 XML 文件中工作的方法?
使用这个:$xmlFrag.InnerXml = $NewXMLNode.innerXml
而不是您原来的作业 $xmlFrag = $NewXMLNode.innerXml
。
您的原始作业将 xml 片段替换为字符串,因此当您尝试将 appendchild 方法与字符串(而不是片段)一起使用时,它会失败。
进一步说明
您可以通过查看以下独立演示来了解结果分配类型的差异。
[xml]$NewXMLNode = "<xml></xml>"
#create document fragment to prevent error regarding no root node
$xmlFrag = $xDoc.CreateDocumentFragment()
Write-Host 'Wiping the fragment and assigning a string' -ForegroundColor Yellow
$xmlFrag = $NewXMLNode.innerXml
$xmlFrag.GetType() | out-string | Write-Host
$xmlFrag = $xDoc.CreateDocumentFragment()
Write-Host 'Proper assignment of the node xml to the newly created fragment' -ForegroundColor Green
$xmlFrag.innerXml = $NewXMLNode.innerXml
$xmlFrag.GetType() | out-string | Write-Host
第一个例子是你做的作业。由于您无法为 appendchild 提供字符串,因此它失败了。第二个任务是你需要做的。 XmlDocumentFragment 类型被正确保留,与 appendchild 方法一起使用时成功。
$xmlFrag = $NewXMLNode.innerXml
Cannot convert argument "0", with value:
"<removed for ease of reading>" value of type "System.String" to type "System.Xml.XmlNode"."
At line:1 char:1
+ $node.AppendChild($xmlFrag)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument
有人知道如何修复此错误吗?或者是否有比我正在使用的方法更好的在 XML 文件中工作的方法?
使用这个:$xmlFrag.InnerXml = $NewXMLNode.innerXml
而不是您原来的作业 $xmlFrag = $NewXMLNode.innerXml
。
您的原始作业将 xml 片段替换为字符串,因此当您尝试将 appendchild 方法与字符串(而不是片段)一起使用时,它会失败。
进一步说明
您可以通过查看以下独立演示来了解结果分配类型的差异。
[xml]$NewXMLNode = "<xml></xml>"
#create document fragment to prevent error regarding no root node
$xmlFrag = $xDoc.CreateDocumentFragment()
Write-Host 'Wiping the fragment and assigning a string' -ForegroundColor Yellow
$xmlFrag = $NewXMLNode.innerXml
$xmlFrag.GetType() | out-string | Write-Host
$xmlFrag = $xDoc.CreateDocumentFragment()
Write-Host 'Proper assignment of the node xml to the newly created fragment' -ForegroundColor Green
$xmlFrag.innerXml = $NewXMLNode.innerXml
$xmlFrag.GetType() | out-string | Write-Host