Share This Post

PowerShell to help Web Site Launch – Multiple Host Headers on Multiple Web Servers

Quite often I receive requests to launch a website with multiple domain names and they will need to work with or with out www such as and The site need to be launched on NLB cluster nodes. I got the contents from developers and copy them over to the production web servers and make necessary configurations – routine stuff.

But if the request is multiple domain names to point to the same site, the task is daunting! 30-50 domains, I have to create DNS zones one by one. Our external DNS is hosted on Windows 2000 and I am hesitate to install PowerShell on it! So for now, I create the dns zones manually (expect to upgrade the DNS server to Windows 2008 soon)!

How about Host Headers, 30 domains multiple by 2 for the www and set them up on two nodes NLB cluster, the picture is not pretty if you do them manually!

Let’s say I got the domain names from business in below format:

All point to and people on the internet should hit them with or without www. Here is my solution:

Save the above domain name in DNSZones.txt

run the little script –

foreach ($zone in (gc .\DNSZones.txt))
{$www = "www." +$Zone;add-content ".\DNSZones.txt" $www}

Now the DNSZones.txt looks like this:

Next run the below script –

New-Item "C:\Users\yl\Documents\PS\Hostheader.txt" -Type file
foreach ($zone in (gc .\DNSZones.txt))
{$IPBinding = "" +$Zone;add-content ".\Hostheader.txt" $IPBinding}

Now the file will be look like below – is the NLB cluster VIP

Why I go through all these trouble and have a file format like that? That’s the Metabase.xml serverbinding format:

I have direct metabase edit enabled on my web servers, I make a BACKUP copy of the metabase.xml file and then open the live one in notepad and search for and underneath that, I look for ServerBindings=" “ and paste the above text file inside the quote and save the file. Open the website property and verify all the host headers are in place! Repeat the same thing for the other NLB nodes. Isn’t that cool!

Wait, I am not out of the woods yet, with that many domain names, everyone involved could easily make a mistake somewhere and we don’t want the business or customer find that out first – how you verify all the domain names resolve and point to the same site? Again, PowerShell!

Remember the DNSZones.txt? I save the below script as CheckWebs.ps1 and run it.

foreach ($domain in gc .\DomainZones.txt)

$ie = new-object -comobject "InternetExplorer.Application"

#$ie.visible = $true

$ie.navigate("http://" + $domain + ".com")


I could easily find out which domain or site is not working, so I can double check!

Only then I feel a little bit love for my job. Most the time, I hate it! 🙂

Share This Post

Ying Li obtained a Master degree of Medicine in China and worked in the medical field before he came to the states in 1996. He made the career switch from troubleshooting people to troubleshooting computers after he came to the states. Not entirely a surprise there, if you know that his second preference for college is Mathematics. Ying is two times Admin Framework MVP awardee (2007-2008).His previous employment experience in the US includes UUNET, MCI WorldCom. MMC (Marsh & McLennan Companies), Merrill Lynch. He is currently employed by Related Companies as a Senior Infrastructure Engineer. He is proficient in virtually all Microsoft products (Office/Back office). His craving for efficiency naturally leads him to scripting, automation and before you know it, PowerShell! He is currently a MCSE (NT4, 2000, 2003) and MCITP Server Administrator. Ying enjoys wines and love to travel. His non work related passion is to advocate Health Living!

Leave a Reply