DSCResources/MSFT_xIIsHandler/MSFT_xIisHandler.psm1
###################################################################################### # DSC Resource for IIS Server level http handlers ###################################################################################### # There are a few limitations with this resource: # It only supports builtin handlers, that come with IIS, not third party ones. # Removing handlers should be no problem, but all new handlers are added at the # top of the list, meaning, they are tried first. There is no way of ordering the # handler list except for removing all and then adding them in the correct order. ###################################################################################### # Load the Helper Module Import-Module $PSScriptRoot\..\Helper.psm1 -Verbose:$false data LocalizedData { # culture="en-US" ConvertFrom-StringData @' NoWebAdministrationModule = Please ensure that WebAdministration module is installed. AddingHandler = Adding handler '{0}' RemovingHandler = Removing handler '{0}' HandlerExists = Handler with name '{0}' already exist HandlerNotPresent = Handler with name '{0}' is not present as requested HandlerNotSupported = The handler with name '{0}' is not supported. '@ } #region script variables $script:handlers = @{ 'aspq-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'aspq-Integrated-4.0'; Path = '*.aspq'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Web.HttpForbiddenHandler'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'aspq-ISAPI-4.0_32bit' = (New-Object PSObject -Property @{ Name = 'aspq-ISAPI-4.0_32bit'; Path = '*.aspq'; Verb = '*'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness32'; ResponseBufferLimit = '0' }); 'aspq-ISAPI-4.0_64bit' = (New-Object PSObject -Property @{ Name = 'aspq-ISAPI-4.0_64bit'; Path = '*.aspq'; Verb = '*'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness64'; ResponseBufferLimit = '0' }); 'AssemblyResourceLoader-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'AssemblyResourceLoader-Integrated-4.0'; Path = 'WebResource.axd'; Verb = 'GET,DEBUG'; Type = 'System.Web.Handlers.AssemblyResourceLoader'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'AssemblyResourceLoader-Integrated' = (New-Object PSObject -Property @{ Name = 'AssemblyResourceLoader-Integrated'; Path = 'WebResource.axd'; Verb = 'GET,DEBUG'; Type = 'System.Web.Handlers.AssemblyResourceLoader'; PreCondition = 'integratedMode' }); 'AXD-ISAPI-2.0-64' = (New-Object PSObject -Property @{ Name = 'AXD-ISAPI-2.0-64'; Path = '*.axd'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv2.0,bitness64'; ResponseBufferLimit = '0' }); 'AXD-ISAPI-2.0' = (New-Object PSObject -Property @{ Name = 'AXD-ISAPI-2.0'; Path = '*.axd'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv2.0,bitness32'; ResponseBufferLimit = '0' }); 'AXD-ISAPI-4.0_32bit' = (New-Object PSObject -Property @{ Name = 'AXD-ISAPI-4.0_32bit'; Path = '*.axd'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness32'; ResponseBufferLimit = '0' }); 'AXD-ISAPI-4.0_64bit' = (New-Object PSObject -Property @{ Name = 'AXD-ISAPI-4.0_64bit'; Path = '*.axd'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness64'; ResponseBufferLimit = '0' }); 'CGI-exe' = (New-Object PSObject -Property @{ Name = 'CGI-exe'; Path = '*.exe'; Verb = '*'; Modules = 'CgiModule'; ResourceType = 'File'; RequireAccess = 'Execute'; AllowPathInfo = 'true' }); 'ClientLoggingHandler' = (New-Object PSObject -Property @{ Name = 'ClientLoggingHandler'; Path = '*.log'; Verb = 'POST'; Modules = 'ClientLoggingHandler'; ResourceType = 'Unspecified'; RequireAccess = 'None' }); 'cshtm-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'cshtm-Integrated-4.0'; Path = '*.cshtm'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Web.HttpForbiddenHandler'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'cshtm-ISAPI-4.0_32bit' = (New-Object PSObject -Property @{ Name = 'cshtm-ISAPI-4.0_32bit'; Path = '*.cshtm'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness32'; ResponseBufferLimit = '0' }); 'cshtm-ISAPI-4.0_64bit' = (New-Object PSObject -Property @{ Name = 'cshtm-ISAPI-4.0_64bit'; Path = '*.cshtm'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness64'; ResponseBufferLimit = '0' }); 'cshtml-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'cshtml-Integrated-4.0'; Path = '*.cshtml'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Web.HttpForbiddenHandler'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'cshtml-ISAPI-4.0_32bit' = (New-Object PSObject -Property @{ Name = 'cshtml-ISAPI-4.0_32bit'; Path = '*.cshtml'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness32'; ResponseBufferLimit = '0' }); 'cshtml-ISAPI-4.0_64bit' = (New-Object PSObject -Property @{ Name = 'cshtml-ISAPI-4.0_64bit'; Path = '*.cshtml'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness64'; ResponseBufferLimit = '0' }); 'ExtensionlessUrlHandler-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'ExtensionlessUrlHandler-Integrated-4.0'; Path = '*.'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Web.Handlers.TransferRequestHandler'; PreCondition = 'integratedMode,runtimeVersionv4.0'; ResponseBufferLimit = '0' }); 'ExtensionlessUrlHandler-ISAPI-4.0_32bit' = (New-Object PSObject -Property @{ Name = 'ExtensionlessUrlHandler-ISAPI-4.0_32bit'; Path = '*.'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness32'; ResponseBufferLimit = '0' }); 'ExtensionlessUrlHandler-ISAPI-4.0_64bit' = (New-Object PSObject -Property @{ Name = 'ExtensionlessUrlHandler-ISAPI-4.0_64bit'; Path = '*.'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness64'; ResponseBufferLimit = '0' }); 'HttpRemotingHandlerFactory-rem-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'HttpRemotingHandlerFactory-rem-Integrated-4.0'; Path = '*.rem'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,;System.Runtime.Remoting,;Version = 4.0.0.0,;Culture = neutral,;PublicKeyToken = b77a5c561934e089'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'HttpRemotingHandlerFactory-rem-Integrated' = (New-Object PSObject -Property @{ Name = 'HttpRemotingHandlerFactory-rem-Integrated'; Path = '*.rem'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,;System.Runtime.Remoting,;Version = 2.0.0.0,;Culture = neutral,;PublicKeyToken = b77a5c561934e089'; PreCondition = 'integratedMode,runtimeVersionv2.0' }); 'HttpRemotingHandlerFactory-rem-ISAPI-2.0-64' = (New-Object PSObject -Property @{ Name = 'HttpRemotingHandlerFactory-rem-ISAPI-2.0-64'; Path = '*.rem'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv2.0,bitness64'; ResponseBufferLimit = '0' }); 'HttpRemotingHandlerFactory-rem-ISAPI-2.0' = (New-Object PSObject -Property @{ Name = 'HttpRemotingHandlerFactory-rem-ISAPI-2.0'; Path = '*.rem'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv2.0,bitness32'; ResponseBufferLimit = '0' }); 'HttpRemotingHandlerFactory-rem-ISAPI-4.0_32bit' = (New-Object PSObject -Property @{ Name = 'HttpRemotingHandlerFactory-rem-ISAPI-4.0_32bit'; Path = '*.rem'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness32'; ResponseBufferLimit = '0' }); 'HttpRemotingHandlerFactory-rem-ISAPI-4.0_64bit' = (New-Object PSObject -Property @{ Name = 'HttpRemotingHandlerFactory-rem-ISAPI-4.0_64bit'; Path = '*.rem'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness64'; ResponseBufferLimit = '0' }); 'HttpRemotingHandlerFactory-soap-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'HttpRemotingHandlerFactory-soap-Integrated-4.0'; Path = '*.soap'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,;System.Runtime.Remoting,;Version = 4.0.0.0,;Culture = neutral,;PublicKeyToken = b77a5c561934e089'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'HttpRemotingHandlerFactory-soap-Integrated' = (New-Object PSObject -Property @{ Name = 'HttpRemotingHandlerFactory-soap-Integrated'; Path = '*.soap'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,;System.Runtime.Remoting,;Version = 2.0.0.0,;Culture = neutral,;PublicKeyToken = b77a5c561934e089'; PreCondition = 'integratedMode,runtimeVersionv2.0' }); 'HttpRemotingHandlerFactory-soap-ISAPI-2.0-64' = (New-Object PSObject -Property @{ Name = 'HttpRemotingHandlerFactory-soap-ISAPI-2.0-64'; Path = '*.soap'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv2.0,bitness64'; ResponseBufferLimit = '0' }); 'HttpRemotingHandlerFactory-soap-ISAPI-2.0' = (New-Object PSObject -Property @{ Name = 'HttpRemotingHandlerFactory-soap-ISAPI-2.0'; Path = '*.soap'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv2.0,bitness32'; ResponseBufferLimit = '0' }); 'HttpRemotingHandlerFactory-soap-ISAPI-4.0_32bit' = (New-Object PSObject -Property @{ Name = 'HttpRemotingHandlerFactory-soap-ISAPI-4.0_32bit'; Path = '*.soap'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness32'; ResponseBufferLimit = '0' }); 'HttpRemotingHandlerFactory-soap-ISAPI-4.0_64bit' = (New-Object PSObject -Property @{ Name = 'HttpRemotingHandlerFactory-soap-ISAPI-4.0_64bit'; Path = '*.soap'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness64'; ResponseBufferLimit = '0' }); 'ISAPI-dll' = (New-Object PSObject -Property @{ Name = 'ISAPI-dll'; Path = '*.dll'; Verb = '*'; Modules = 'IsapiModule'; ResourceType = 'File'; RequireAccess = 'Execute'; AllowPathInfo = 'true' }); 'OPTIONSVerbHandler' = (New-Object PSObject -Property @{ Name = 'OPTIONSVerbHandler'; Path = '*'; Verb = 'OPTIONS'; Modules = 'ProtocolSupportModule'; RequireAccess = 'None' }); 'PageHandlerFactory-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'PageHandlerFactory-Integrated-4.0'; Path = '*.aspx'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Web.UI.PageHandlerFactory'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'PageHandlerFactory-Integrated' = (New-Object PSObject -Property @{ Name = 'PageHandlerFactory-Integrated'; Path = '*.aspx'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Web.UI.PageHandlerFactory'; PreCondition = 'integratedMode' }); 'PageHandlerFactory-ISAPI-2.0-64' = (New-Object PSObject -Property @{ Name = 'PageHandlerFactory-ISAPI-2.0-64'; Path = '*.aspx'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv2.0,bitness64'; ResponseBufferLimit = '0' }); 'PageHandlerFactory-ISAPI-2.0' = (New-Object PSObject -Property @{ Name = 'PageHandlerFactory-ISAPI-2.0'; Path = '*.aspx'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv2.0,bitness32'; ResponseBufferLimit = '0' }); 'PageHandlerFactory-ISAPI-4.0_32bit' = (New-Object PSObject -Property @{ Name = 'PageHandlerFactory-ISAPI-4.0_32bit'; Path = '*.aspx'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness32'; ResponseBufferLimit = '0' }); 'PageHandlerFactory-ISAPI-4.0_64bit' = (New-Object PSObject -Property @{ Name = 'PageHandlerFactory-ISAPI-4.0_64bit'; Path = '*.aspx'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness64'; ResponseBufferLimit = '0' }); 'rules-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'rules-Integrated-4.0'; Path = '*.rules'; Verb = '*'; Type = 'System.ServiceModel.Activation.ServiceHttpHandlerFactory,;System.ServiceModel.Activation,;Version = 4.0.0.0,;Culture = neutral,;PublicKeyToken = 31bf3856ad364e35'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'rules-ISAPI-4.0_32bit' = (New-Object PSObject -Property @{ Name = 'rules-ISAPI-4.0_32bit'; Path = '*.rules'; Verb = '*'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness32'; ResponseBufferLimit = '0' }); 'rules-ISAPI-4.0_64bit' = (New-Object PSObject -Property @{ Name = 'rules-ISAPI-4.0_64bit'; Path = '*.rules'; Verb = '*'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness64'; ResponseBufferLimit = '0' }); 'ScriptHandlerFactoryAppServices-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'ScriptHandlerFactoryAppServices-Integrated-4.0'; Path = '*_AppService.axd'; Verb = '*'; Type = 'System.Web.Script.Services.ScriptHandlerFactory,;System.Web.Extensions,;Version = 4.0.0.0,;Culture = neutral,;PublicKeyToken = 31BF3856AD364E35'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'ScriptResourceIntegrated-4.0' = (New-Object PSObject -Property @{ Name = 'ScriptResourceIntegrated-4.0'; Path = '*ScriptResource.axd'; Verb = 'GET,HEAD'; Type = 'System.Web.Handlers.ScriptResourceHandler,;System.Web.Extensions,;Version = 4.0.0.0,;Culture = neutral,;PublicKeyToken = 31BF3856AD364E35'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'SecurityCertificate' = (New-Object PSObject -Property @{ Name = 'SecurityCertificate'; Path = '*.cer'; Verb = 'GET,HEAD,POST'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\system32\inetsrv\asp.dll'; ResourceType = 'File' }); 'SimpleHandlerFactory-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'SimpleHandlerFactory-Integrated-4.0'; Path = '*.ashx'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Web.UI.SimpleHandlerFactory'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'SimpleHandlerFactory-Integrated' = (New-Object PSObject -Property @{ Name = 'SimpleHandlerFactory-Integrated'; Path = '*.ashx'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Web.UI.SimpleHandlerFactory'; PreCondition = 'integratedMode' }); 'SimpleHandlerFactory-ISAPI-2.0-64' = (New-Object PSObject -Property @{ Name = 'SimpleHandlerFactory-ISAPI-2.0-64'; Path = '*.ashx'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv2.0,bitness64'; ResponseBufferLimit = '0' }); 'SimpleHandlerFactory-ISAPI-2.0' = (New-Object PSObject -Property @{ Name = 'SimpleHandlerFactory-ISAPI-2.0'; Path = '*.ashx'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv2.0,bitness32'; ResponseBufferLimit = '0' }); 'SimpleHandlerFactory-ISAPI-4.0_32bit' = (New-Object PSObject -Property @{ Name = 'SimpleHandlerFactory-ISAPI-4.0_32bit'; Path = '*.ashx'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness32'; ResponseBufferLimit = '0' }); 'SimpleHandlerFactory-ISAPI-4.0_64bit' = (New-Object PSObject -Property @{ Name = 'SimpleHandlerFactory-ISAPI-4.0_64bit'; Path = '*.ashx'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness64'; ResponseBufferLimit = '0' }); 'SSINC-shtm' = (New-Object PSObject -Property @{ Name = 'SSINC-shtm'; Path = '*.shtm'; Verb = 'GET,HEAD,POST'; Modules = 'ServerSideIncludeModule'; ResourceType = 'File' }); 'SSINC-shtml' = (New-Object PSObject -Property @{ Name = 'SSINC-shtml'; Path = '*.shtml'; Verb = 'GET,HEAD,POST'; Modules = 'ServerSideIncludeModule'; ResourceType = 'File' }); 'SSINC-stm' = (New-Object PSObject -Property @{ Name = 'SSINC-stm'; Path = '*.stm'; Verb = 'GET,HEAD,POST'; Modules = 'ServerSideIncludeModule'; ResourceType = 'File' }); 'StaticFile' = (New-Object PSObject -Property @{ Name = 'StaticFile'; Path = '*'; Verb = '*'; Modules = 'StaticFileModule,DefaultDocumentModule,DirectoryListingModule'; ResourceType = 'Either'; RequireAccess = 'Read' }); 'svc-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'svc-Integrated-4.0'; Path = '*.svc'; Verb = '*'; Type = 'System.ServiceModel.Activation.ServiceHttpHandlerFactory,;System.ServiceModel.Activation,;Version = 4.0.0.0,;Culture = neutral,;PublicKeyToken = 31bf3856ad364e35'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'svc-ISAPI-4.0_32bit' = (New-Object PSObject -Property @{ Name = 'svc-ISAPI-4.0_32bit'; Path = '*.svc'; Verb = '*'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness32'; ResponseBufferLimit = '0' }); 'svc-ISAPI-4.0_64bit' = (New-Object PSObject -Property @{ Name = 'svc-ISAPI-4.0_64bit'; Path = '*.svc'; Verb = '*'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness64'; ResponseBufferLimit = '0' }); 'TraceHandler-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'TraceHandler-Integrated-4.0'; Path = 'trace.axd'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Web.Handlers.TraceHandler'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'TraceHandler-Integrated' = (New-Object PSObject -Property @{ Name = 'TraceHandler-Integrated'; Path = 'trace.axd'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Web.Handlers.TraceHandler'; PreCondition = 'integratedMode' }); 'TRACEVerbHandler' = (New-Object PSObject -Property @{ Name = 'TRACEVerbHandler'; Path = '*'; Verb = 'TRACE'; Modules = 'ProtocolSupportModule'; RequireAccess = 'None' }); 'vbhtm-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'vbhtm-Integrated-4.0'; Path = '*.vbhtm'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Web.HttpForbiddenHandler'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'vbhtm-ISAPI-4.0_32bit' = (New-Object PSObject -Property @{ Name = 'vbhtm-ISAPI-4.0_32bit'; Path = '*.vbhtm'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness32'; ResponseBufferLimit = '0' }); 'vbhtm-ISAPI-4.0_64bit' = (New-Object PSObject -Property @{ Name = 'vbhtm-ISAPI-4.0_64bit'; Path = '*.vbhtm'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness64'; ResponseBufferLimit = '0' }); 'vbhtml-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'vbhtml-Integrated-4.0'; Path = '*.vbhtml'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Web.HttpForbiddenHandler'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'vbhtml-ISAPI-4.0_32bit' = (New-Object PSObject -Property @{ Name = 'vbhtml-ISAPI-4.0_32bit'; Path = '*.vbhtml'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness32'; ResponseBufferLimit = '0' }); 'vbhtml-ISAPI-4.0_64bit' = (New-Object PSObject -Property @{ Name = 'vbhtml-ISAPI-4.0_64bit'; Path = '*.vbhtml'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness64'; ResponseBufferLimit = '0' }); 'WebAdminHandler-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'WebAdminHandler-Integrated-4.0'; Path = 'WebAdmin.axd'; Verb = 'GET,DEBUG'; Type = 'System.Web.Handlers.WebAdminHandler'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'WebAdminHandler-Integrated' = (New-Object PSObject -Property @{ Name = 'WebAdminHandler-Integrated'; Path = 'WebAdmin.axd'; Verb = 'GET,DEBUG'; Type = 'System.Web.Handlers.WebAdminHandler'; PreCondition = 'integratedMode' }); 'WebDAV' = (New-Object PSObject -Property @{ Name = 'WebDAV'; Path = '*'; Verb = 'PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK'; Modules = 'WebDAVModule'; ResourceType = 'Unspecified'; RequireAccess = 'None' }); 'WebServiceHandlerFactory-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'WebServiceHandlerFactory-Integrated-4.0'; Path = '*.asmx'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Web.Script.Services.ScriptHandlerFactory,;System.Web.Extensions,;Version = 4.0.0.0,;Culture = neutral,;PublicKeyToken = 31bf3856ad364e35'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'WebServiceHandlerFactory-Integrated' = (New-Object PSObject -Property @{ Name = 'WebServiceHandlerFactory-Integrated'; Path = '*.asmx'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Web.Services.Protocols.WebServiceHandlerFactory,;System.Web.Services,;Version = 2.0.0.0,;Culture = neutral,;PublicKeyToken = b03f5f7f11d50a3a'; PreCondition = 'integratedMode,runtimeVersionv2.0' }); 'WebServiceHandlerFactory-ISAPI-2.0-64' = (New-Object PSObject -Property @{ Name = 'WebServiceHandlerFactory-ISAPI-2.0-64'; Path = '*.asmx'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv2.0,bitness64'; ResponseBufferLimit = '0' }); 'WebServiceHandlerFactory-ISAPI-2.0' = (New-Object PSObject -Property @{ Name = 'WebServiceHandlerFactory-ISAPI-2.0'; Path = '*.asmx'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv2.0,bitness32'; ResponseBufferLimit = '0' }); 'WebServiceHandlerFactory-ISAPI-4.0_32bit' = (New-Object PSObject -Property @{ Name = 'WebServiceHandlerFactory-ISAPI-4.0_32bit'; Path = '*.asmx'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness32'; ResponseBufferLimit = '0' }); 'WebServiceHandlerFactory-ISAPI-4.0_64bit' = (New-Object PSObject -Property @{ Name = 'WebServiceHandlerFactory-ISAPI-4.0_64bit'; Path = '*.asmx'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness64'; ResponseBufferLimit = '0' }); 'xamlx-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'xamlx-Integrated-4.0'; Path = '*.xamlx'; Verb = 'GET,HEAD,POST,DEBUG'; Type = 'System.Xaml.Hosting.XamlHttpHandlerFactory,;System.Xaml.Hosting,;Version = 4.0.0.0,;Culture = neutral,;PublicKeyToken = 31bf3856ad364e35'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'xamlx-ISAPI-4.0_32bit' = (New-Object PSObject -Property @{ Name = 'xamlx-ISAPI-4.0_32bit'; Path = '*.xamlx'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness32'; ResponseBufferLimit = '0' }); 'xamlx-ISAPI-4.0_64bit' = (New-Object PSObject -Property @{ Name = 'xamlx-ISAPI-4.0_64bit'; Path = '*.xamlx'; Verb = 'GET,HEAD,POST,DEBUG'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness64'; ResponseBufferLimit = '0' }); 'xoml-Integrated-4.0' = (New-Object PSObject -Property @{ Name = 'xoml-Integrated-4.0'; Path = '*.xoml'; Verb = '*'; Type = 'System.ServiceModel.Activation.ServiceHttpHandlerFactory,;System.ServiceModel.Activation,;Version = 4.0.0.0,;Culture = neutral,;PublicKeyToken = 31bf3856ad364e35'; PreCondition = 'integratedMode,runtimeVersionv4.0' }); 'xoml-ISAPI-4.0_32bit' = (New-Object PSObject -Property @{ Name = 'xoml-ISAPI-4.0_32bit'; Path = '*.xoml'; Verb = '*'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness32'; ResponseBufferLimit = '0' }); 'xoml-ISAPI-4.0_64bit' = (New-Object PSObject -Property @{ Name = 'xoml-ISAPI-4.0_64bit'; Path = '*.xoml'; Verb = '*'; Modules = 'IsapiModule'; ScriptProcessor = '%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'; PreCondition = 'classicMode,runtimeVersionv4.0,bitness64'; ResponseBufferLimit = '0' }) } #endregion #region Get-TargetResource function Get-TargetResource { [OutputType([Hashtable])] param ( [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [String]$Name, [Parameter(Mandatory)] [ValidateSet('Present', 'Absent')] [string]$Ensure ) # Check if WebAdministration module is present for IIS cmdlets Assert-Module $handler = Get-Handler -Name $Name if ($handler -eq $null) { return @{ Ensure = 'Absent' Name = $Name } } else { return @{ Ensure = 'Present' Name = $Name } } } #endregion #region Set-TargetResource function Set-TargetResource { param ( [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [String]$Name, [Parameter(Mandatory)] [ValidateSet('Present', 'Absent')] [string]$Ensure ) Assert-Module [string] $psPathRoot = 'MACHINE/WEBROOT/APPHOST' [string] $sectionNode = 'system.webServer/handlers' $handler = Get-Handler -Name $Name if ($handler -eq $null -and $Ensure -eq 'Present') { # add the handler Add-Handler -Name $Name Write-Verbose -Message ($LocalizedData.AddingHandler -f $Name) } elseif ($handler -ne $null -and $Ensure -eq 'Absent') { # remove the handler Remove-WebConfigurationProperty -PSPath $psPathRoot -Filter $sectionNode -Name '.' -AtElement @{name="$Name"} Write-Verbose -Message ($LocalizedData.RemovingHandler -f $Name) } } #endregion #region Test-TargetResource function Test-TargetResource { [OutputType([System.Boolean])] param ( [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [String]$Name, [Parameter(Mandatory)] [ValidateSet('Present', 'Absent')] [string]$Ensure ) Assert-Module $handler = Get-Handler -Name $Name if (($handler -eq $null -and $Ensure -eq 'Present') -or ($handler -ne $null -and $Ensure -eq 'Absent')) { return $false; } elseif ($handler -ne $null -and $Ensure -eq 'Present') { # Handler is present Write-Verbose -Message ($LocalizedData.HandlerExists -f $Name); return $true; } else { # Handler not present and should not be there. Write-Verbose -Message ($LocalizedData.HandlerNotPresent -f $Name); return $true; } } #endregion #region Helper Functions function Get-Handler { param ( [string] $Name ) [string] $filter = "system.webServer/handlers/Add[@Name='" + $Name + "']" return Get-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter $filter -Name . } function Add-Handler { param ( [string] $Name ) # check whether our dictionary has an item with the specified key if ($script:handlers.ContainsKey($name)) { # add the new handler Add-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter 'system.webServer/handlers' -Name '.' -Value $script:handlers[$Name] } else { New-TerminatingError -ErrorId 'HandlerNotSupported' -ErrorMessage $($LocalizedData.HandlerNotSupported -f $Name) -ErrorCategory InvalidArgument } } #endregion # FUNCTIONS TO BE EXPORTED Export-ModuleMember -Function *-TargetResource |