Once the server has rebooted, take a few
minutes and verify that things are working the way they should. If you
didn't look at the setup log at the end of the installation, review it
now. It's located at <system drive>\ExchangeSetupLogs\ExchangeSetup.log. Look for errors and warnings.
Remember the FilterPack installed as part of the
prerequisites? Now that Exchange is installed, we need to register the
file formats we wish Exchange to include when indexing. This requires
editing the registry of the Exchange server. Fortunately, Microsoft has
provided some shell code to perform this task.
$DLLPath = $env:CommonProgramFiles + "\Microsoft Shared\Filters"
$CLSIDKey = "HKLM:\SOFTWARE\Microsoft\ExchangeServer\V14\MSSearch\CLSID"
$FiltersKey = "HKLM:\SOFTWARE\Microsoft\ExchangeServer\v14\MSSearch\Filters"
# Filter DLL Locations
$officeFilterLocation = $DLLPath + "\offfiltx.dll"
$onenoteFilterLocation = $DLLPath + "\ONIFilter.dll"
$visioFilterLocation = $DLLPath + "\VISFilt.DLL"
# Filter GUIDs
$docxGuid ="{5A98B233-3C59-4B31-944C-0E560D85E6C3}"
$pptxGuid ="{DDFE337F-4987-4EC8-BDE3-133FA63D5D85}"
$xlsxGuid ="{F90DFE0C-CBDF-41FF-8598-EDD8F222A2C8}"
$zipGuid ="{20E823C2-62F3-4638-96BD-90F4F6784EBC}"
$xlsbGuid ="{312AB530-ECC9-496E-AE0E-C9E6C5392499}"
$onenoteGuid ="{B8D12492-CE0F-40AD-83EA-099A03D493F1}"
$vsdGuid ="{FAEA5B46-761B-400E-B53E-E805A97A543E}"
# Create CLSIDs
Write-Host "Creating CLSIDs..."
New-Item -Path $CLSIDKey -Name $docxGuid -Value $officeFilterLocation -Type String
New-Item -Path $CLSIDKey -Name $pptxGuid -Value $officeFilterLocation -Type String
New-Item -Path $CLSIDKey -Name $xlsxGuid -Value $officeFilterLocation -Type String
New-Item -Path $CLSIDKey -Name $zipGuid -Value $officeFilterLocation -Type String
New-Item -Path $CLSIDKey -Name $xlsbGuid -Value $officeFilterLocation -Type String
New-Item -Path $CLSIDKey -Name $onenoteGuid -Value $onenoteFilterLocation -Type String
New-Item -Path $CLSIDKey -Name $vsdGuid -Value $visioFilterLocation -Type String
# Set Threading model
Write-Host "Setting threading model..."
New-ItemProperty -Path "$CLSIDKey\$docxGuid" -Name "ThreadingModel" -Value "Both" -Type String
New-ItemProperty -Path "$CLSIDKey\$pptxGuid" -Name "ThreadingModel" -Value "Both" -Type String
New-ItemProperty -Path "$CLSIDKey\$xlsxGuid" -Name "ThreadingModel" -Value "Both" -Type String
New-ItemProperty -Path "$CLSIDKey\$zipGuid" -Name "ThreadingModel" -Value "Both" -Type String
New-ItemProperty -Path "$CLSIDKey\$xlsbGuid" -Name "ThreadingModel" -Value "Both" -Type String
New-ItemProperty -Path "$CLSIDKey\$onenoteGuid" -Name "ThreadingModel" -Value "Both" -Type String
New-ItemProperty -Path "$CLSIDKey\$vsdGuid" -Name "ThreadingModel" -Value "Both" -Type String
# Create Filter Entries
Write-Host "Creating Filter Entries..."
# Uncomment these if you wish to index these uncommonly exchanged formats
#New-Item -Path $FiltersKey -Name ".docm" -Value $docxGuid -Type String
#New-Item -Path $FiltersKey -Name ".pptm" -Value $pptxGuid -Type String
#New-Item -Path $FiltersKey -Name ".xlsm" -Value $xlsxGuid -Type String
#New-Item -Path $FiltersKey -Name ".vss" -Value $vsdGuid -Type String
#New-Item -Path $FiltersKey -Name ".vst" -Value $vsdGuid -Type String
#New-Item -Path $FiltersKey -Name ".vsx" -Value $vsdGuid -Type String
#New-Item -Path $FiltersKey -Name ".vtx" -Value $vsdGuid -Type String
# These are the entries for commonly exchange formats
New-Item -Path $FiltersKey -Name ".docx" -Value $docxGuid -Type String
New-Item -Path $FiltersKey -Name ".pptx" -Value $pptxGuid -Type String
New-Item -Path $FiltersKey -Name ".xlsx" -Value $xlsxGuid -Type String
New-Item -Path $FiltersKey -Name ".xlsb" -Value $xlsbGuid -Type String
New-Item -Path $FiltersKey -Name ".zip" -Value $zipGuid -Type String
New-Item -Path $FiltersKey -Name ".one" -Value $onenoteGuid -Type String
New-Item -Path $FiltersKey -Name ".vsd" -Value $vsdGuid -Type String
Write-Host "Registry subkeys created."
Write-Host "Please restart Microsoft Search (Exchange) service from the Services console,
or by running stop-service msftesql-Exchange -Force ; start-service MSExchangeSearch "
Save that code as c:\RegisterMicrosoftFilterPack.ps1. Open Exchange Management Shell. Click Start=> All Programs=> Microsoft Exchange Server 2010=>
Exchange Management Shell. The first time this is started, it will take
a couple of minutes to complete some post installation initialization.
Change to c:\ and type .\RegisterMicrosoftFilterPack.ps1
and press Enter. The script will run, registering any file formats that
aren't already registered. Once registered, we restart the Exchange
Search service using the following command in the Exchange Management
Shell:
stop-service msftesql-Exchange -Force ; start-service MSExchangeSearch
Next, use the Get-ExchangeServer cmdlet to get the information about installed roles. An example would be:
Get-ExchangeServer | FT Name,ServerRole -auto
The output of this command will list verify installed roles for the Exchange server. You should see Mailbox, ClientAccess, and HubTransport listed under ServerRole.
Next, let's take a look using Event Viewer for any signs of problems. Click Start => All Programs => Administrative Tools =>
Event Viewer. Navigate to Windows Logs and then Application. Look for
errors and warnings that may indicate a problem. It's common to see a
warning such as the one shown in Figure 1.
The error appears because the Offline Address Book
(OAB) has yet to be generated. This error can be safely ignored for
now, and you can close Event Viewer.
When you're sure that the installation has been
successful, you can move on to post-installation configuration. We'll
start with the Exchange Management Console. To open that, click Start =>
Exchange Management Console. As with the Exchange Management Shell, the
first time this is started, the program will take a minute or two to
finish configuration.
You will be presented with a popup box that
lists any unlicensed Exchange servers, and how much time is left in the
trial period. Click OK on the message. We are now ready to use the
Exchange Management Console.