3 votes

Powershell - comment ajouter <sectionGroup> à web.config

J'essaie d'ajouter un sectionGroup à l'élément configuration/configSections dans un web.config à l'aide de Powershell.

J'ai actuellement

$filePath = [path to my web.config file]

# load the XML from the web.config
$xml = New-Object XML
$xml = [xml](Get-Content $filePath)

# navigate to the <configSections> element
$xmlConfigSections = $xml.SelectSingleNode("//configuration/configSections")

# create the new <sectionGroup> element with a 'name' attribute
$sectionGroup = $xml.CreateElement("sectionGroup")
$xmlAttr = $xml.CreateAttribute("name")
$xmlAttr.Value = "myCustomSectionGroup"
$sectionGroup.Attributes.Append($xmlAttr)

# now add the new <sectionGroup> element to the <configSections> element
$xmlConfigSections.AppendChild($sectionGroup)

#save the web.config
$xml.Save($filePath)

Mais cela entraîne une exception au niveau de la CreateElement méthode :

"Le nœud spécifié ne peut pas être inséré en tant qu'enfant valide de ce nœud, car le nœud spécifié n'est pas le bon. car le nœud spécifié n'est pas du bon type."

Je ne comprends pas pourquoi une telle exception est levée lorsque j'essaie de créer l'élément (l'exception semble concerner l'ajout d'un élément).

J'ai également essayé

$newConfig = [xml]@'<sectionGroup name="myCustomSectionGroup"></sectionGroup>'@

$filePath = [path to my web.config file]

# load the XML from the web.config
$xml = New-Object XML
$xml = [xml](Get-Content $filePath)

# navigate to the <configSections> element
$xmlConfigSections = $xml.SelectSingleNode("//configuration/configSections")

$xmlConfigSections.AppendChild($newConfig)

Mais cela provoque exactement la même exception que précédemment.

<sectionGroup> est définitivement un enfant valide de <configSections> .

Idéalement, je préférerais que la deuxième tentative fonctionne parce qu'elle ne m'oblige pas à déclarer chaque élément, chaque attribut, etc. .

Quelqu'un peut-il m'expliquer pourquoi le <configSections> Le nœud ne permet pas à mon <sectionGroup> élément ?

8voto

David Martin Points 4323

Ceci devrait suffire :

$filePath = [path to my web.config file]

# load the XML from the web.config
$xml = New-Object XML
$xml = [xml](Get-Content $filePath)

$sectionGroup = $xml.CreateElement('sectionGroup')
$sectionGroup.SetAttribute('name','myCustomSectionGroup')
$sectionGroupChild = $xml.CreateElement('sectionGroupChild')
$sectionGroupChild.SetAttribute('name','myCustomSectionGroup')

$newNode = $xml.configuration.configSections.AppendChild($sectionGroup)
$newNode.AppendChild($sectionGroupChild)

$xml.Save($filePath)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X