DSCResources/DSC_WebConfigPropertyCollection/en-US/about_WebConfigPropertyCollection.help.txt

.NAME
    WebConfigPropertyCollection
 
.DESCRIPTION
    The WebConfigPropertyCollection DSC resource is used to ensure the value of an
    identified property collection item's property in the web.config file.
 
    >Builds upon the deprecated WebConfigKeyValue resource to support all web.config
    >elements that contain collections of child items.
 
    ## Requirements
 
    * Target machine must be running Windows Server 2012 R2 or later.
 
    ## Known issues
 
    All issues are not listed here, see https://github.com/dsccommunity/WebAdministration/issues?q=is%3Aissue+is%3Aopen+in%3Atitle+WebConfigPropertyCollection.
 
.PARAMETER WebsitePath
    Key - String
    Path to website location (IIS or WebAdministration format).
 
.PARAMETER Filter
    Key - String
    Filter used to locate property collection to update.
 
.PARAMETER CollectionName
    Key - String
    Name of the property collection to update.
 
.PARAMETER ItemName
    Key - String
    Name of the property collection item to update.
 
.PARAMETER ItemKeyName
    Key - String
    Name of the key of the property collection item to update.
 
.PARAMETER ItemKeyValue
    Key - String
    Value of the key of the property collection item to update.
 
.PARAMETER ItemPropertyName
    Key - String
    Name of the property of the property collection item to update.
 
.PARAMETER ItemPropertyValue
    Write - String
    Value of the property of the property collection item to update.
 
.PARAMETER Ensure
    Write - String
    Allowed values: Present, Absent
    Indicates if the property and value of the property collection item should be present or absent. Defaults to Present.
 
.EXAMPLE 1
 
Disables the HTTP TRACE method at the server level.
 
This example shows how to use the WebConfigPropertyCollection DSC resource for adding a configuration element.
It will add an "add" element to the system.webServer/security/requestFiltering/verbs collection to disable the HTTP TRACE verb.
 
Configuration Sample_WebConfigPropertyCollection_Add
{
    param
    (
        # Target nodes to apply the configuration.
        [Parameter()]
        [String[]]
        $NodeName = 'localhost'
    )
 
    # Import the modules that define custom resources
    Import-DscResource -ModuleName WebAdministrationDsc
 
    Node $NodeName
    {
        WebConfigPropertyCollection "$($NodeName) - Disable HTTP TRACE method"
        {
            WebsitePath = 'MACHINE/WEBROOT/APPHOST'
            Filter = 'system.webServer/security/requestFiltering'
            CollectionName = 'verbs'
            ItemName = 'add'
            ItemKeyName = 'verb'
            ItemKeyValue = 'TRACE'
            ItemPropertyName = 'allowed'
            ItemPropertyValue = 'false'
            Ensure = 'Present'
        }
    }
}
 
.EXAMPLE 2
 
Removes disabling the HTTP TRACE method at the server level.
 
This example shows how to use the WebConfigPropertyCollection DSC resource for removing a configuration element.
It will remove the "add" element from the system.webServer/security/requestFiltering/verbs collection (if present) for disabling the HTTP TRACE verb.
 
Configuration Sample_WebConfigPropertyCollection_Remove
{
    param
    (
        # Target nodes to apply the configuration.
        [Parameter()]
        [String[]]
        $NodeName = 'localhost'
    )
 
    # Import the modules that define custom resources
    Import-DscResource -ModuleName WebAdministrationDsc
 
    Node $NodeName
    {
        WebConfigPropertyCollection "$($NodeName) - Remove disabling HTTP TRACE method"
        {
            WebsitePath = 'MACHINE/WEBROOT/APPHOST'
            Filter = 'system.webServer/security/requestFiltering'
            CollectionName = 'verbs'
            ItemName = 'add'
            ItemKeyName = 'verb'
            ItemKeyValue = 'TRACE'
            ItemPropertyName = 'allowed'
            Ensure = 'Absent'
        }
    }
}
 
.EXAMPLE 3
 
Make appsettings.json inaccessible to clients.
 
This example shows how to use the WebConfigPropertyCollection DSC resource for adding a single item configuration element.
It will add an "add" element to the system.webServer/security/requestFiltering/hiddenSegments collection to block appsettings.json.
 
Configuration Sample_WebConfigPropertyCollection_SingleItemAdd
{
    param
    (
        # Target nodes to apply the configuration.
        [Parameter()]
        [String[]]
        $NodeName = 'localhost'
    )
 
    # Import the modules that define custom resources
    Import-DscResource -ModuleName WebAdministrationDsc
 
    Node $NodeName
    {
        WebConfigPropertyCollection "$($NodeName) - Block appsettings.json"
        {
            WebsitePath = 'MACHINE/WEBROOT/APPHOST'
            Filter = 'system.webServer/security/requestFiltering'
            CollectionName = 'hiddenSegments'
            ItemName = 'add'
            ItemKeyName = '*'
            ItemKeyValue = 'appsettings.json'
            ItemPropertyName = 'segment'
            ItemPropertyValue = 'appsettings.json'
            Ensure = 'Present'
        }
    }
}
 
.EXAMPLE 4
 
Removes making appsettings.json inaccessible to clients.
 
This example shows how to use the WebConfigPropertyCollection DSC resource for removing a single item configuration element.
It will remove the "add" element from the system.webServer/security/requestFiltering/hiddenSegments collection (if present) for blocking appsettings.json.
 
Configuration Sample_WebConfigPropertyCollection_SingleItemRemove
{
    param
    (
        # Target nodes to apply the configuration.
        [Parameter()]
        [String[]]
        $NodeName = 'localhost'
    )
 
    # Import the modules that define custom resources
    Import-DscResource -ModuleName WebAdministrationDsc
 
    Node $NodeName
    {
        WebConfigPropertyCollection "$($NodeName) - Remove blocking appsettings.json"
        {
            WebsitePath = 'MACHINE/WEBROOT/APPHOST'
            Filter = 'system.webServer/security/requestFiltering'
            CollectionName = 'hiddenSegments'
            ItemName = 'add'
            ItemKeyName = '*'
            ItemKeyValue = 'appsettings.json'
            ItemPropertyName = 'segment'
            Ensure = 'Absent'
        }
    }
}