DSCResources/MSFT_xIIsHandler/MSFT_xIisHandler.psm1
$script:resourceModulePath = Split-Path -Path (Split-Path -Path $PSScriptRoot -Parent) -Parent $script:modulesFolderPath = Join-Path -Path $script:resourceModulePath -ChildPath 'Modules' $script:localizationModulePath = Join-Path -Path $script:modulesFolderPath -ChildPath 'xWebAdministration.Common' Import-Module -Name (Join-Path -Path $script:localizationModulePath -ChildPath 'xWebAdministration.Common.psm1') # Import Localization Strings $script:localizedData = Get-LocalizedData -ResourceName 'MSFT_xIisHandler' #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 function Get-TargetResource { <# .SYNOPSIS This will return a hashtable of results #> [OutputType([Hashtable])] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [String] $Name, [Parameter(Mandatory = $true)] [ValidateSet('Present', 'Absent')] [String] $Ensure ) # Check if WebAdministration module is present for IIS cmdlets Assert-Module $handler = Get-Handler -Name $Name if ($null -eq $handler) { Write-Verbose -Message $script:localizedData.VerboseGetTargetAbsent return @{ Ensure = 'Absent' Name = $Name } } else { Write-Verbose -Message $script:localizedData.VerboseGetTargetPresent return @{ Ensure = 'Present' Name = $Name } } } function Set-TargetResource { <# .SYNOPSIS This will set the desired state .NOTES 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. #> [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseShouldProcessForStateChangingFunctions", "")] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [String] $Name, [Parameter(Mandatory = $true)] [ValidateSet('Present', 'Absent')] [String] $Ensure ) Assert-Module [String] $psPathRoot = 'MACHINE/WEBROOT/APPHOST' [String] $sectionNode = 'system.webServer/handlers' $handler = Get-Handler -Name $Name if ($null -eq $handler -and $Ensure -eq 'Present') { # add the handler Add-Handler -Name $Name Write-Verbose -Message ($script:localizedData.AddingHandler -f $Name) } elseif ($null -ne $handler -and $Ensure -eq 'Absent') { # remove the handler Remove-WebConfigurationProperty -PSPath $psPathRoot ` -Filter $sectionNode ` -Name '.' ` -AtElement @{ name = "$Name" } Write-Verbose -Message ($script:localizedData.RemovingHandler -f $Name) } } function Test-TargetResource { <# .SYNOPSIS This tests the desired state. If the state is not correct it will return $false. If the state is correct it will return $true #> [OutputType([System.Boolean])] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [String] $Name, [Parameter(Mandatory = $true)] [ValidateSet('Present', 'Absent')] [String] $Ensure ) Assert-Module $handler = Get-Handler -Name $Name if (($null -eq $handler -and $Ensure -eq 'Present') -or ` ($null -ne $handler -and $Ensure -eq 'Absent')) { return $false } elseif ($null -ne $handler -and $Ensure -eq 'Present') { # Handler is present Write-Verbose -Message ($script:localizedData.HandlerExists -f $Name) return $true } else { # Handler not present and should not be there. Write-Verbose -Message ($script:localizedData.HandlerNotPresent -f $Name) return $true } } #region Helper Functions function Get-Handler { param ( [Parameter()] [String] $Name ) [String] $filter = "system.webServer/handlers/Add[@Name='" + $Name + "']" return Get-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' ` -Filter $filter ` -Name '.' } function Add-Handler { param ( [Parameter()] [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 $($script:localizedData.HandlerNotSupported -f $Name) ` -ErrorCategory InvalidArgument } } #endregion Export-ModuleMember -Function *-TargetResource |