Thursday, August 18, 2016

Interactive Script to Configure More than One Static Global Catalog

Hi folks,

Just wanted to shared with you a script that will allow you to configured static global catalogs for any Exchange 2010 and later environment. Of course this is not a best practice to hard code global catalogs on Exchange servers according to Microsoft, however reasons may arise why you want to limit your Exchange servers to talk to this or that GC only. Mostly this is due to the performance of GCs which presents risk that an Exchange server can pick up a GC that is low on resources.. When putting together a script I assumed that you want to make static GCs resilient and therefore to configure your server to use 2 GCs. If you want to use more GCs you will need to add variable $GC3. If you want to reduce number of GCs to 1 then you will need to remove all references to $GC2.

The value for each $GCx variable should be a FQDN of a GC.

The code will look like something below:


$GC1 = Read-Host "Type names of Global Catalogs to be used as static GC for exchange. F.e Server1.contoso.net"
$GC2 += Read-Host "If more than one static Glbal Catalog is in use type its name. F.e Server2.contoso.net"
$Server = $(Get-WmiObject Win32_Computersystem).name
Set-ExchangeServer $Server -StaticGlobalCatalogs $GC1,$GC2

Enjoy!

Thursday, August 11, 2016

UM Language Pack Adventures

Hi folks,

I would love to share with you about my recent adventure. I had to install 3 Exchange 2010 UM servers. Installation appeared to finish fine. However when I started installation of UM language packs I was presented with the following error:


As troubleshooting I started checking Exchange installation log that is created during installation (ExchangeSetup) and I found the following entry:


Further digging in the ExchangeSetup.log lead me to the following error entries:

[08/11/2016 14:31:36.0326] [2] [ERROR] Unexpected Error
[08/11/2016 14:31:36.0326] [2] [ERROR] Service 'MSExchangeADTopology' failed to reach status 'Running' on this server.

So it appears that AD topology service failed to start at the installation and therefore failed to register UM role in the AD. Interestingly enough all the UM-related services were running.

To resolve this problem I re-ran Exchange 2010 installation program.


After instillation successfully completed I kicked off installation of language pack. This time I wasn't faced by any errors and was able to proceed with the installation.




When checking installation log I saw that setup program was able to read UM role from the AD.



Finally, when checking registry (HKLM\Software\Microsoft\ExchangeServer\v14\UnifiedMessagingRole\LanguagePacks) for language pack I was able to see that in addition to the default en-US my language pack was also installed):



I hope you will find it useful.

Enjoy!

Wednesday, August 3, 2016

Automatic Uninstall of Windows Management Framework

Hi folks,

I would love to share with you about an experience I have recently had. I was working on the installation of Exchange 2016 servers on servers running Windows Server 2012 R2. The standard image that I had came with the PowerShell 5.0 with which Exchange 2016 can't work. PowerShell 5.0 comes for Windows 2012 R2 as part of the Windows Management Framework 5.0.

So before installing Exchange 2016 you will need to uninstall it to avoid issues when running EMS. It can be done easily from Windows Control Panel. However there is also an automatic way of uninstalling it.

This method can be useful when you are trying to uninstall it from more than one server or when you are trying to understand any other Windows updates or hotfixes. In the Technet gallery there is a module that allows to perform installation. It can be located here.

After module is downloaded you will need to load it to your PowerShell section and then you will need to execute the Uninstall-OSCHotfix cmdlet with the number of the KB of the update you want to uninstall. In case of the Windows Management Framework it is KB3134758.

In my case script the code looked like something as below. Please note that the path to the PSM1 file may vary.

Import-Module c:\Scripts\UninstallHotFixPowerShell\UninstallHotFix.psm1
Uninstall-OSCHotfix -HotFixID KB3134758

It will look something like this:

After update is uninstalled you will need tor reboot your server for it to take effect. After which you can confirm that you are running PowerShell v4.0 by running the below command:

$PSVersionTable.PSVersion



Finally, I would love to repeat that this module can be used for other updates and hotfixes. All you need is to include the appropriate KB number into your command.

Enjoy!