IIS 6 Host Header Scripting

I have the need to add and/or delete host headers from a specific web site via scripting or some other automated process.  I am familiar with iisweb.vbs but it appears to only allow the creation and deletion of web sites, not their host headers.

I have administrative access to the server, so permissions should not be an issue.

Thank you,
Aristippus
LVL 1
AristippusAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Dave_DietzConnect With a Mentor Commented:
Put the following in a VBS file:
-----------------------------------------------------------------------------------------------------------------
SiteInstance = 1                     'Default Web Site - test value - modify for use

IPAddress = "127.0.0.1"          'test value - modify for use - leave blank for 'All Unassigned'

PortNumber = "80"                  'default

HostHeader = "localhost"         'test value - modify for use - set to blank to remove
 
IIsObjectPath = "IIS://localhost/W3SVC/" & SiteInstance ' & "/ServerBindings"
       
Set IIsObject = GetObject(IIsObjectPath)

IIsObject.Put "ServerBindings", IPAddress & ":" & PortNumber & ":" & HostHeader

IIsObject.Setinfo
-------------------------------------------------------------------------------------------------------------

:-)

Dave Dietz
0
 
AristippusAuthor Commented:
Dave,

Thanks for the reply, but that script 'changes' the host header and other information.

I need the ability to 'add' and remove additional host headers.

Hopefully this script can be modified to produce the desired results.

Thank you,
Arisitippus
0
 
AristippusAuthor Commented:
Dave's script didn't allow for what I needed, but it did lead me in the right direction.

IIS object does NOT support ADS_PROPERTY_APPEND so it needs a work around (load existing into an array, redim array adding element, rewrite the properties).

It also tests to ensure that the host header does not already exist.

The working script:

Const ADS_PROPERTY_UPDATE = 2
strADsPath = "IIS://localhost"
strKey = "W3SVC/1"
strAttribute = "ServerBindings"
strEntry = "127.0.0.1:80:new.test.com"
Set objKey = GetObject(strADsPath & "/" & strKey)

arrValue=objKey.GetEx(strAttribute)
' Check to see whether the entry is already in the
' collection. If it is, quit and inform
For Each strValue in arrValue
      If strValue = strEntry Then
            WScript.Echo "The entry: " & strEntry & _
                  " is already present in " & strAttribute & "." & _
                  " The script will now quit."
            WScript.Quit
      End If
Next

' Add a new item to the array.
Redim Preserve arrValue(uBound(arrValue) + 1)
' Add the value to the new item in the array.
arrValue(uBound(arrValue)) = strEntry

' Update the object with the existing values
' and the new value if it wasn't already present.
objKey.PutEx ADS_PROPERTY_UPDATE, strAttribute, arrValue
objKey.SetInfo

arrValue=objKey.GetEx(strAttribute)
For Each strValue in arrValue
      WScript.Echo strValue
Next
0
 
Dave_DietzCommented:
I was just working on something like this -  just nowhere near as elegant.....  :-)

Dave Dietz
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.