Public/Add-WordContent.ps1
function Add-WordContent { [cmdletbinding()] Param ( [Parameter(Mandatory = $true, ValueFromPipeline = $True, Position = 0)] [System.Xml.XmlElement]$Content ) Begin { $VerbosePrefix = "Add-WordContent:" if (!($global:OpenWordDocument)) { Throw "$VerbosePrefix No open Word Document, use Open-WordDocument to get started." } ############################################################# #region XmlSetup # Import Xml from $global:OpenWordDocument $DocumentXmlPath = Join-Path -Path $global:OpenWordDocument -ChildPath word/document.xml $RootDocument = [xml](Get-Content -Path $DocumentXmlPath) # Add Namespaces to document now that there are some contents $WNamespaceUri = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main' $XmlNamespaceUri = 'http://www.w3.org/XML/1998/namespace' $RootDocument.DocumentElement.SetAttribute('xmlns:w', $WNamespaceUri) $RootDocument.DocumentElement.SetAttribute('xmlns:xml', $XmlNamespaceUri) #endregion XmlSetup ############################################################# } Process { ############################################################# #region AddNodes Write-Verbose "$VerbosePrefix adding content" $ImportNode = $RootDocument.ImportNode($Content, $true) $RootDocument.document.body.AppendChild($ImportNode) | Out-Null #endregion AddNodes ############################################################# } End { ############################################################# #region Output # Output back to document.xml $global:root = $RootDocument $RootDocument.OuterXml | Out-File -FilePath $DocumentXmlPath -Force #endregion Output ############################################################# } } |