There may be a better way to do this (the xml spec defines a renameNode method, but as far as I can tell MS hasn’t implemented this, and if they have I couldn’t find it), but this sufficed for my purposes. This just creates a new node under the parent of the node you’re looking for and then copies the original nodes’ text content into the new node. It then removes the original node.
[xml]$xmlDoc = Get-Content c:\XMLFile.xml foreach($node in $xmlDoc.SelectNodes('/Node1/Node2')){ $newNode = $xmlDoc.CreateNode([System.Xml.XmlNodeType]::Element, $node.Prefix, 'NewNode', $node.NamespaceURI); $newNode.InnerText = $node.InnerText; $node.ParentNode.AppendChild($newNode); $node.ParentNode.RemoveChild($node); } $xmlDoc.Save('c:\XMLFileReplaced.xml');