Edit XML file using DSC

Hi All,

I am working on a server setup using DSC. Intial setup for IIS needs the ApplicationHost.config file to be edited and modified. As this is a XML file, can we modify the tags of this file using any of the DSC module available?

If there is no module available for this task, Please guide me to create a custom module to complete this.

Thanks

I’m not aware of an existing XML-editing resource. You would need to build something custom, if that was the goal. “The DSC Book” has an overview of creating custom resource modules, and our DSC Hub links to our Git repo, where you can find several custom modules to use as examples.

The WebAdministration module has several commands for managing IIS configuration files, without having to concern yourself with the XML directly. (Get-Command -Module WebAdministration -Name config). The DSC resource kit’s xWebAdministration module has a resource called xWebConfigKeyValue which might be what you’re looking for; it uses these WebAdministration commands to manage the files.

Note: For some reason, the “Wave 9” download of the DSC resource kit is missing some of the xWebAdministration resources, including xWebConfigKeyValue. It’s present in the Wave 8 download, though.

Hi Dave,

Checked the xWebConfigKeyValue resource and it is configured to modify the Appsettings of the web.config file of the WebSite. As per my requirement , I need to modify the logfile path of the applicationhost.config file. Already the powershell script to do the job is as below :

Set-WebConfigurationProperty ‘/system.applicationHost/sites/siteDefaults/logfile’ -PSPath IIS:\ -Name directory -Value $logsPath

Can I modify the below parameters to run the above command?

xWebConfigKeyValue RecaptchaPublicKey
{
WebsitePath = $managementPortalInstallPath
ConfigSection = ‘AppSettings’
Key = ‘recaptchaPublicKey’
Value = $Node.RecaptchaPublicKey
DependsOn = ‘[File]ManagementPortalContents’
}

With this module: https://github.com/PowerShell/xWebAdministration there is a setting you can use.
eg.
xWebSiteDefaults IIS
{
ApplyTo = ‘Machine’
LogFormat = ‘W3C’
AllowSubDirConfig = $true
LogDirectory = ‘E:\LogFiles\IISLogs’
DependsOn = “[WindowsFeature]IIS”
}

Thanks Guys,

It is already done and we can mark this completed.
Working fine across all of my shared environment.