WebAdministrationDsc icon indicating copy to clipboard operation
WebAdministrationDsc copied to clipboard

IisModule - Using to remove at server level doesn't work

Open quillypowers opened this issue 2 years ago • 1 comments

Problem description

Duplicate site error thrown when site param isn't set. In general this resource needs better examples.

Verbose logs

VERBOSE: [S150RCDOCSWS-CI]: LCM:  [ Start  Resource ]  [[IisModule]ServerSideIncludeModule]
VERBOSE: [S150RCDOCSWS-CI]: LCM:  [ Start  Test     ]  [[IisModule]ServerSideIncludeModule]
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] Getting Handler for 'ServerSideIncludeModule' in Site ''.
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] Get-TargetResource has been run.
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] Get-TargetResource has been run.
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] RequestPath is '*.shtm'.
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] Path is '%windir%\System32\inetsrv\iis_ssi.dll'.
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] StatusRequestPath is ''.
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] StatusPath is ''.
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] Module present is 'False'.
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] ModuleConfigured is 'False'.
VERBOSE: [S150RCDOCSWS-CI]: LCM:  [ End    Test     ]  [[IisModule]ServerSideIncludeModule]  in 0.3600 seconds.
VERBOSE: [S150RCDOCSWS-CI]: LCM:  [ Start  Set      ]  [[IisModule]ServerSideIncludeModule]
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] Getting Handler for 'ServerSideIncludeModule' in Site ''.
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] Get-TargetResource has been run.
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] RequestPath is '*.shtm'.
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] Path is '%windir%\System32\inetsrv\iis_ssi.dll'.
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] StatusRequestPath is ''.
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] StatusPath is ''.
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] Module present is 'False'.
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] ModuleConfigured is 'False'.
VERBOSE: [S150RCDOCSWS-CI]:                            [[IisModule]ServerSideIncludeModule] Removing handler.
The parameter "SiteName" is declared in parameter-set "__AllParameterSets" multiple times.
At C:\projects\SqlDscGit\DevServers\RunAll\WebApp\ServerConfigs.ps1:2148 char:21
+ ...             Start-DSCConfiguration -Path $localpath -Cimsession $Sess ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : MetadataError: (:) [], CimException
    + FullyQualifiedErrorId : ParameterDeclaredInParameterSetMultipleTimes

DSC configuration

IisModule ServerSideIncludeModule
        {
            Name = "ServerSideIncludeModule"
            Path = "%windir%\System32\inetsrv\iis_ssi.dll"
            RequestPath = "*.shtm"
            Verb = "*"
            Ensure = "Absent"
        }

Suggested solution

I'm using this for IIS hardening and trying to remove unused modules, ideally at the server level, so maybe an example of how to do this (if it works) would be a solution. In this example, if site is a required param it should be marked required and noted that it only works down at the site level.

Operating system the target node is running

Major  Minor  Build  Revision
-----  -----  -----  --------
10     0      17763  0

PowerShell version and build the target node is running

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      17763  5328

WebAdministrationDsc version

4.1.0

quillypowers avatar Feb 20 '24 21:02 quillypowers

To me it looks like bug in the code. It looks like it calls without any parameters

https://github.com/dsccommunity/WebAdministrationDsc/blob/379853046b60f537e1422a014aed334d4da4c0ed/source/DSCResources/DSC_IisModule/DSC_IisModule.psm1#L168

But the function actually has mandatory parameters so the above call could never be successful.

https://github.com/dsccommunity/WebAdministrationDsc/blob/379853046b60f537e1422a014aed334d4da4c0ed/source/DSCResources/DSC_IisModule/DSC_IisModule.psm1#L290-L301

Not sure how this has ever worked. Most likely there are no unit tests that are testing this code path.

johlju avatar Feb 21 '24 17:02 johlju