Ваша первая проблема в том, что вы получаете не элемент XML, а строку.Вам нужно получить узел XML из вашего документа XML, но используемый сокращенный метод предполагает, что вам нужна строка.Обычно вы можете принудительно вызвать его, явным образом приведя к [System.Xml.XmlElement], но это не всегда работает.Вы можете надежно получить элемент, используя «SelectSingleNode».
Вы еще не достигли своей второй проблемы, но она не за горами.Получив XML, он все равно не будет работать, потому что он из другого XML-документа, поэтому вам необходимо «импортировать» узел.Вы можете настроить это так, чтобы XML выровнялся так, как вы предполагаете, но код работает.
$parentString = @"
<manifest>
<manifestExecution>
<assetDetail>
<fileAsset fileAssetGuid="parentguid1">
<parentfile1 />
</fileAsset>
<fileAsset fileAssetGuid="parentguid2">
<parentfile2 />
</fileAsset>
</assetDetail>
</manifestExecution>
</manifest>
"@
$childString = @"
<manifest>
<manifestExecution>
<assetDetail>
<fileAsset fileAssetGuid="childguid1">
<childfile1 />
</fileAsset>
</assetDetail>
</manifestExecution>
</manifest>
"@
$parent = [xml] ($parentString)
$parentnode = $parent.manifest.manifestExecution.assetDetail
$child = [xml] ($childString)
$xpath = '/manifest/manifestExecution/assetDetail'
$childnode = $child.SelectSingleNode($xpath)
Write-Host("So the child is $($childnode.OuterXML)")
$importedNode = $parent.ImportNode($childNode,$true)
Write-Host("And after importing: $($importedNode.OuterXML)")
$parentnode.InsertAfter($importednode, $parentnode.LastChild)
Write-Host("To finally yield: $($parent.OuterXML)")
Кроме того, вы можете обнаружить, что можете использовать что-то похожее на исходный код, если правильно приведете его к XmlElement.
$childnode = [System.Xml.XmlElement]$child.manifest.manifestExecution.assetDetail.InnerXml