IIS Compression: Enable GZIP and DEFLATE using Powershell

compressiongzipiisiis-6powershell

How does one do the following things with IIS 5.1/6.0 using PowerShell:

  • Enable HTTP Compression
  • Set GZIP and DEFLATE file extensions
  • Enable Dynamic and Static compression for GZIP and DEFLATE
  • Set the compression lvl

Any pointers to tutorials on this would be appreciated as I have yet to come across any that explain how to do this programmatically.

Best Answer

Your initial line of attack with PowerShell is to use WMI. Unfortunately, the root\MicrosoftIisV2 namespace is set up with non-standard security settings which you can't change in PS (not in V1, at least, V2 may be different).

I would suggest looking at the IIS ADSI provider, specifically the IIsCompressionScheme object - http://msdn.microsoft.com/en-us/library/ms524574.aspx

You may be able to work with this in PowerShell by manipulating

$obj = [ADSI]"IIS://MachineName/W3SVC/Filters/Compression/Scheme"

However, ADSI is pretty evil, so you'll have a fairly steep learning curve.