Before performing an Exchange Server 2010 migration, you have to make sure Active Directory meets certain prerequisites. Thankfully, there are a number of PowerShell cmdlets to help you prepare your Active Directory forest for the move.
Validating your Active Directory forest
Before deploying Exchange Server 2010, your Active Directory forest must meet several different conditions:
- There must be at least one global catalog server running Windows Server 2003 SP1 or higher. This server must also exist in the same site that the Exchange server gets installed on.
- The Active Directory forest must run forest-functional level of Windows Server 2003 or higher.
- The domain you’re going to install Exchange in must be Windows Server 2003 or higher.
- The server with the schema master role must run Windows Server 2003 SP1 or higher.
The easiest way to check if Active Directory meets these prerequisites is to open a PowerShell 2.0 session — not an Exchange Management Shell (EMS) session — and enter the following command:
Get-ADForest | Format-List Name, GlobalCatalogs, ForestMode, Domains, SchemaMaster, Sites
After executing this command, you will receive the forest name, the names of the global catalog servers within the forest, the forest-functional level, the names of the domains within the forest, the schema master name and the names of the Active Directory sites. All of this information is important when preparing your Active Directory forest for an Exchange 2010 migration.

Checking the forest-functional level
As you can see in image above, my Active Directory forest is already running at the Windows 2003 forest-functional level. If necessary, you can upgrade the forest-functional level using the following command:
Get-ADForest | Set-ADForestMode –ForestMode Windows2003Forest –Confirm:$True

Checking server versions
Both the Active Directory schema master and at least one global catalog server in each site must run Windows Server 2003 SP1 or higher. The Get-ADForest command revealed the identities of your global catalog servers and the schema master. However, you still need to determine which version of Windows those servers are running.
Enter the command below, but make sure to substitute your server’s NetBIOS name for <servername> and add a dollar sign ($) to the end of your server’s name. Otherwise, the command won’t work.
Get-ADComputer –Filter {SamAccountName –EQ “<server name>$”} –Properties OperatingSystem, OperatingSystemServicePack | Format-List Name, OperatingSystem, OperatingSystemServicePack