InnerXML is your friend to add a bunch of XML quickly.
The bit of XML that I want to add to my web.config is:
<location path="FederationMetadata">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
The super duper easy way is to simply dump in your XML as text.
Begin by reading in your XML file (just as in the previous posts).
$path = (( Get-Website | where {$_.Name -match ($role.Id)} ).PhysicalPath + "\Mine\Site\web.config")
$file = get-item -path $path# Get the content of the config file and cast it to XML to easily find and modify settings.
$xml = [xml](get-content $file)
Create the new element object.
$idModel = $xml.CreateElement("microsoft.identityModel")
Add the attribute
Populate it with the XML text.
$idModel.Set_InnerXML(
@"
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>"@
)
Save it back.
$xml.configuration.AppendChild($idModel)
All done. Super simple, very little tree hopping.