Это упрощенный c подход с учетом деталей вопроса.
$x = [xml](Get-Content -Path '<pathToFile>\RSReportServer.config')
$node = $x.Authentication.AuthenticationTypes
$node.AppendChild($x.CreateNode([System.Xml.XmlNodeType]::Element,'RSWindowsNTLM',$null))
$node.AppendChild($x.CreateNode([System.Xml.XmlNodeType]::Element,'RSWindowsBasic',$null))
$x.Save('<pathToFile>\RSReportServer.config')
Вы по сути выбираете свой родительский узел ($node
). Используйте метод AppendChild()
, чтобы добавить вновь созданный узел. Вы можете легко создать узел, используя метод CreateNode()
, предоставленный экземпляром XmlDocument
($x
).
Вы должны использовать полный путь к файлу конфигурации при использовании метода Save()
.
Для более динамичного подхода c вы можете создать коллекцию узлов для добавления. Затем l oop через коллекцию и добавить только недостающие узлы в узел AuthenticationTypes
.
$NodesToAdd = 'RSWindowsNegotiate','RSWindowsNTLM','RSWindowsBasic'
$x = [xml](Get-Content -Path '<pathToFile>\RSReportServer.config')
$node = $x.Authentication.AuthenticationTypes
foreach ($item in $NodesToAdd) {
if (!$node.Item($item)) {
$node.AppendChild($x.CreateNode([System.Xml.XmlNodeType]::Element,$item,$null))
}
}
$x.Save('<pathToFile>\RSReportServer.config')