Zachary Loeber

I eat complexity and am never without a meal.

Exchange: Automatically Generating Configuration Scripts

I’ve started a side project which is born from personally having to redo many aspects of an Exchange migration over and over again. Most of this, I believe, can be automated. Some aspects of this process include exchange server role prerequisite procedures, co-existence configuration, DAG/CAS configuration, and other general reminders and processes.

Where To Download and find future updates: Microsoft Script Gallery


Pretty simple acctually. Enter in information about every server in your exchange environment. There is no sanity checking on names and such so try to be as concise as possible. The URLs should be in the form of without any protocol or path.

The design model I’m basing the script output on assumes that you want to have forms based authentication both internally and externally and that externally facing CAS servers are behind a reverse proxy doing basic authentication. So to get full use of this script on a 2 node cas array you would have a total of 5 IP addresses defined but only 4 entries in your server list. 2 for each server and one for the NLB internal IP (which is an included field when you select the NLB option). If you are doing all-in-one servers just define the same server name with multiple roles. If you have a larger environment you can save the config into a csv file for later use or general documentation as well.


Here is the current status of this personal project. I welcome all input whole heartedly. And until I say otherwise I’m not even endorsing my own script as feasible for production worthy utilization. So obviously don’t just wantonly run the scripts that get generated. (In fact I know I’m missing a few things like fixing the OAB virtual directory permission issue). At the moment only 2008 R2 with Exchange 2010 HUB/CAS/Database roles are functioning. I’ve placeholders for the other stuff, it just is not done yet.


Exchange 2003


Exchange 2007


Exchange 2010

  • Save/Restore input to/from csv
  • Generate general prerequisites for windows 2008 R2
  • Generate general HUB/CAS server prerequisites
  • Generate general Database/Mailbox server prerequisite
  • Generate base CAS configuration for internal/external configurations
    • Optionally configure ssl and path redirection
    • Optionally assume external facing sites are behind reverse proxy
    • SSL Offload code not generated (yet!)
  • Generate NLB configurations

Exchange 2012



  • Provide prerequisite information for all versions of exchange (2007 and forward) for migration scenarios
  • Perform sanity checks on input (have a bit of that but not being used yet)
  • Generate scripts for configuring Hub/CAS servers internal and external configuration for co-existence scenarios.
  • Generate scripts for configuring Hub/CAS servers internal and external configuration for allowing forms based auth both internally and externally (assuming enough IPs have been provisioned of course)
  • Generate scripts for configuring CAS Arrays per site
  • Generate DAG scripts
  • Generate local route scripts for multi-interface scenarios
  • Do all of the above for both Exchange 2010 and 2013
  • Include specific co-existance guidance for 2003/2007
  • Generate prerequisites for Windows 2012
  • Provide the meaning of life, the universe, and everything.


Version 0.1 – 09/29/2012

  • Running out of time on my primalforms powershell studio demo so I quickly updated the form to add an options section
  • Greatly improved script output with regions and formatting changes
  • Added NLB Configuration
  • Added internal/external virtual directory matched sets detection (for future use)
  • Numerous other fixes

Version .02 – 09/25/2012

  • Rearanged the form a bit
  • Added in a beta of exporting internal/external CAS configuration scripts
  • Vastly improved the pre-config script export
  • Update the catagorization to include OS and Exchange versions (for future fun)

Version .01 – 09/22/2012

  • Fixed tabbing order
  • Added subnet (for future route add directions)
  • Made prerequisite generation to be per server
  • Fixed server sorting code
  • Added database server prerequisite generation
  • Added all versions of exchange (including 2013) with appropriate enabling and disabling of form input per role/version
  • Made massive improvements on output of prerequisites (including general recommendations and segmentation)

Version .001 – Initial cruddy release

  • This release is SO alpha that all it does at this point is generate some basic prerequisites for HUB/CAS servers. There is more to come (time permitting). The more encouragement I get from responses to this super alpha release, the more I’m going to be inclined to further develop it. Otherwise, I’m just putting this out there as an idea which I’d like to further develop as time permits.