This post talks about removing an existing XML element from the config file. Consider a scenario where we have the following web.config file saved at location C:\MyApplication
The requirement is to remove the <configSections> and the module “moduleToRemove” . These sections are marked in Red.
The resultant file should look like this
Lets have a look at the Powershell script we will be using. We will name this script RemoveElement.ps1 and save it in C:\Scripts
# Declaring the parameter to be passed while executing the Powershell script
Param ( $webConfigPath # Path to the web.config file. Make sure file is not read-only )
$xml = [xml](get-content $webConfigPath) # Create XML object and open the web.config file
$nodeToRemove= $xml.configuration.SelectSingleNode("configSections"); # Selecting the Element to be removed $xml.configuration.RemoveChild($nodeToRemove); # Remove the Element
foreach( $item in $xml.configuration."system.webServer".modules.add ) # Traverse through all modules { if( $item.name -eq "moduleToRemove" ) # Checking if the current module is to be removed { $xml.configuration."system.webServer".modules.RemoveChild($item); # Remove the desired module when found } }
$xml.Save($webConfigPath) # Save the updated web.config file
Run the script:
c:\>Powershell
PS C:\> cd scripts
PS C:\scripts> .\RemoveElement.ps1 “C:\MyApplication\web.config”
Related Posts:
Automating config file changes : Part 1 – Installing Microsoft Windows Powershell
Automating config file changes : Part 2 – modifying already existing config keys