Error Installing Step 10 of 12 Mailbox roles: Mailbox service on Exchange 2013 CU2

Step 10 of 12 Mailbox roles: Mailbox service

Error:

The following error was generated when "$error.Clear();

          if (!$RoleIsDatacenter -and !$RoleIsDatacenterDedicated)

          {

            $createNewOab = $false;

            $oabName = $null;

            $oabAddressList = $null;

            $oabVdirs = $null;

            $oabGlobalWebDistribution = $false;

            $oabConfiguredAttributes = $null;

            Write-ExchangeSetupLog -Info ("Looking for an existing default OAB");

            $defaultOab = Get-OfflineAddressBook -DomainController:$RoleDomainController | where {$_.IsDefault};

            if ($defaultOab -ne $null)

            {

              Write-ExchangeSetupLog -Info ("Found a default OAB: " + $defaultOab.Name + "; checking its version");

              if ($defaultOab.ExchangeVersion.CompareTo([Microsoft.Exchange.Data.ExchangeObjectVersion]::Exchange2012) -lt 0)

              {

                $e15Oab = Get-OfflineAddressBook -DomainController:$RoleDomainController | where {$_.ExchangeVersion.CompareTo([Microsoft.Exchange.Data.ExchangeObjectVersion]::Exchange2012) -eq 0};

                if ($e15Oab -eq $null)

                {

                  Write-ExchangeSetupLog -Info ("Existing OAB is Exchange 2010 or older; will create a new OAB");

                  $createNewOab = $true;

                  $oabName = $defaultOab.Name + " (Ex2013)";

                  $oabAddressList = $defaultOab.AddressLists;

                  $oabGlobalWebDistribution = $defaultOab.GlobalWebDistributionEnabled;

                  $oabConfiguredAttributes = $defaultOab.ConfiguredAttributes;

                }

                else

                {

                  Write-ExchangeSetupLog -Info ("Already has an existing Exchange 2013 OAB:" + $e15Oab.Name + "; will not create a new OAB");

                }

              }

              else

              {

                Write-ExchangeSetupLog -Info ("Existing OAB is Exchange 2013 or newer; will not create a new OAB");

              }

            }

            else

            {

              Write-ExchangeSetupLog -Info ("Did not find a default OAB; will create one");

              $createNewOab = $true;

             

              $oabName = [Microsoft.Exchange.Data.Directory.SystemConfiguration.OfflineAddressBook]::DefaultName;

              $nonDefaultOabWithDefaultName = Get-OfflineAddressBook $oabName -DomainController:$RoleDomainController -ErrorAction SilentlyContinue | where {$_.IsDefault -eq $false};

              if ($nonDefaultOabWithDefaultName -ne $null)

              {

                $createNewOab = $false;

                Write-ExchangeSetupLog -Warning `

                  ("Offline address book " + `

                  $nonDefaultOabWithDefaultName.Name + `

                  " already exists: " + `

                  $nonDefaultOabWithDefaultName.DistinguishedName + `

                  ". Use administrative tools to change it to default OAB.");

              }

              $allGals = @(Get-GlobalAddressList -DomainController:$RoleDomainController | where {$_.IsDefaultGlobalAddressList});

              if ($allGals -eq $null -or $allGals.Count -eq 0)

              {

                $createNewOab = $false;

                Write-ExchangeSetupLog -Warning `

                  ("Couldn't find the default global address list. The default offline address book can't be created.");

              }

              elseif ($allGals.Count -gt 1)

              {

                $createNewOab = $false;

                Write-ExchangeSetupLog -Warning `

                  ("Found " + $allGals.Count + " default global address lists. You can have only one default global address list in your organization. The default offline address book will not be created.");

              }

              else

              {

                $oabAddressList = $allGals[0];

                Write-ExchangeSetupLog -Info ("OAB will be based on default GAL: " + $oabAddressList.Name);

              }

            }

            if ($createNewOab)

            {

              if ($oabGlobalWebDistribution -eq $false)

              {

                $currentAdSiteDn = (Get-ExchangeServer $RoleFqdnOrName -DomainController:$RoleDomainController).Site.DistinguishedName;

                $allOabVdirs = @(Get-OabVirtualDirectory -DomainController:$RoleDomainController);

                $e15MinimumServerVersion = New-Object Microsoft.Exchange.Data.ServerVersion([Microsoft.Exchange.Data.Directory.SystemConfiguration.Server]::E15MinVersion);

                if ($allOabVdirs -ne $null -and $allOabVdirs.Count -gt 0)

                {

                  foreach ($oabVdir in $allOabVdirs)

                  {

                    if ([Microsoft.Exchange.Data.ServerVersion]::Compare($oabVdir.AdminDisplayVersion, $e15MinimumServerVersion) -gt 0)

                    {

                      $oabVdirSiteDn = (Get-ExchangeServer $oabVdir.Server -DomainController:$RoleDomainController).Site.DistinguishedName;

                      if ($oabVdirSiteDn -eq $currentAdSiteDn)

                      {

                        $oabVdirs = $oabVdir;

                        break;

                      }

                      elseif ($oabVdirs -eq $null)

                      {

                        $oabVdirs = $oabVdir;

                      }

                    }

                  }

                }

                if ($oabVdirs -ne $null)

                {

                  Write-ExchangeSetupLog -Info ("OAB will be distributed to OAB virtual directory " + $oabVdirs.Name);

                }

                else

                {

                  Write-ExchangeSetupLog -Info ("Could not find any OAB virtual directories; OAB will be configured without distribution.");

                }

              }

              try

              {

                Write-ExchangeSetupLog -Info ("Creating new default OAB.");

                $newOab = New-OfflineAddressBook `

                  -Name $oabName `

                  -AddressLists $oabAddressList `

                  -VirtualDirectories $oabVdirs `

                  -GlobalWebDistributionEnabled $oabGlobalWebDistribution `

                  -IsDefault $true `

                  -DomainController:$RoleDomainController;

              }

              catch [Microsoft.Exchange.Data.Directory.ADObjectAlreadyExistsException]

              {

                Write-ExchangeSetupLog -Warning ("Tried to create new default OAB but the object already exists; it may have been created by another instance of setup.");

              }

              if ($oabConfiguredAttributes -ne $null)

              {

                Write-ExchangeSetupLog -Info ("Setting OAB ConfiguredAttributes to: " + $oabConfiguredAttributes);

                Set-OfflineAddressBook $newOab -ConfiguredAttributes $oabConfiguredAttributes -DomainController:$RoleDomainController;

              }

            }

          }

        " was run: "Cannot find an overload for "CompareTo" and the argument count: "1".".

September 30th, 2013 1:41pm

Hello,

Please make sure whether you deploy the first exchange 2013 mailbox server in an existing exchange 2007/2010 organization. If so, I recommend you configure your existing mailbox databases to explicitly point to the current default OAB prior to introducing the first Exchange 2013 server. After you do it, please check the result.

Here is the blog for your reference.

http://blogs.technet.com/b/exchange/archive/2013/04/02/released-exchange-server-2013-rtm-cumulative-update-1.aspx

Free Windows Admin Tool Kit Click here and download it now
October 1st, 2013 9:07am

hi Cara,  thanks very much for your response.

yes, we have 2007 and 2013 together in the environment.

2007 was the first one that was installed. then we intended to install 4 exchange 2013 servers. for the first two(1&2), it was successful. 

only when we tried to install the last two(3&4) we saw this error.  1& 2 are on one site and 3 &4 are on another site. there is one DC at each site.

so, if what you said is true, then the first two installations would have failed as well. 

anyway, could you help to locate where we configure the databases and default OAB ? 

October 25th, 2013 10:40am

so we're having the same issue. Installing Exchange 2013 across 2 sites in a coexistence 2007/2010 environment. Everything on one site (3x Exchange servers) installed perfectly, but only 1x Exchange servers on other site installed. Remaining 2x Exchange servers gave the same error that Harry had. Any ideas? I checked OAB and all mailboxes had a default OAB assigned already. looked through the logs and found this in case it helps:

[02/13/2015 22:37:31.0105] [2] Found a default OAB: Default Offline Address List (Ex2013) Default Offline Address List (Ex2013)
CNF:608015af-50a4-450a-0000-91fada1a9af9; checking its version
[02/13/2015 22:37:31.0120] [2] Ending processing Write-ExchangeSetupLog
[02/13/2015 22:37:31.0151] [1] The following 1 error(s) occurred during task execution:
[02/13/2015 22:37:31.0151] [1] 0.  ErrorRecord: Cannot find an overload for "CompareTo" and the argument count: "1".
[02/13/2015 22:37:31.0151] [1] 0.  ErrorRecord: System.Management.Automation.MethodException: Cannot find an overload for "CompareTo" and the argument count: "1".
   at CallSite.Target(Closure , CallSite , Object , Object )
   at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1)
   at System.Management.Automation.Interpreter.DynamicInstruction`3.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
[02/13/2015 22:37:31.0151] [1] [ERROR] The following error was generated when "$error.Clear(); 
          if (!$RoleIsDatacenter -and !$RoleIsDatacenterDedicated)
          {
            $createNewOab = $false;
            $oabName = $null;
            $oabAddressList = $null;
            $oabVdirs = $null;
            $oabGlobalWebDistribution = $false;
            $oabConfiguredAttributes = $null;

            Write-ExchangeSetupLog -Info ("Looking for an existing default OAB");
            $defaultOab = Get-OfflineAddressBook -DomainController:$RoleDomainController | where {$_.IsDefault};
            if ($defaultOab -ne $null)
            {
              Write-ExchangeSetupLog -Info ("Found a default OAB: " + $defaultOab.Name + "; checking its version");
              if ($defaultOab.ExchangeVersion.CompareTo([Microsoft.Exchange.Data.ExchangeObjectVersion]::Exchange2012) -lt 0)
              {
                $e15Oab = Get-OfflineAddressBook -DomainController:$RoleDomainController | where {$_.ExchangeVersion.CompareTo([Microsoft.Exchange.Data.ExchangeObjectVersion]::Exchange2012) -eq 0};
                if ($e15Oab -eq $null)
                {
                  Write-ExchangeSetupLog -Info ("Existing OAB is Exchange 2010 or older; will create a new OAB");
                  $createNewOab = $true;
                  $oabName = $defaultOab.Name + " (Ex2013)";
                  $oabAddressList = $defaultOab.AddressLists;
                  $oabGlobalWebDistribution = $defaultOab.GlobalWebDistributionEnabled;
                  $oabConfiguredAttributes = $defaultOab.ConfiguredAttributes;
                }
                else
                {
                  Write-ExchangeSetupLog -Info ("Already has an existing Exchange 2013 OAB:" + $e15Oab.Name + "; will not create a new OAB");
                }
              }
              else
              {
                Write-ExchangeSetupLog -Info ("Existing OAB is Exchange 2013 or newer; will not create a new OAB");
              }
            }
            else
            {
              Write-ExchangeSetupLog -Info ("Did not find a default OAB; will create one");
              $createNewOab = $true;
              
              $oabName = [Microsoft.Exchange.Data.Directory.SystemConfiguration.OfflineAddressBook]::DefaultName;
              $nonDefaultOabWithDefaultName = Get-OfflineAddressBook $oabName -DomainController:$RoleDomainController -ErrorAction SilentlyContinue | where {$_.IsDefault -eq $false};
              if ($nonDefaultOabWithDefaultName -ne $null)
              {
                $createNewOab = $false;
                Write-ExchangeSetupLog -Warning `
                  ("Offline address book " + `
                  $nonDefaultOabWithDefaultName.Name + `
                  " already exists: " + `
                  $nonDefaultOabWithDefaultName.DistinguishedName + `
                  ". Use administrative tools to change it to default OAB.");
              }

              $allGals = @(Get-GlobalAddressList -DomainController:$RoleDomainController | where {$_.IsDefaultGlobalAddressList});
              if ($allGals -eq $null -or $allGals.Count -eq 0)
              {
                $createNewOab = $false;
                Write-ExchangeSetupLog -Warning `
                  ("Couldn't find the default global address list. The default offline address book can't be created.");
              }
              elseif ($allGals.Count -gt 1)
              {
                $createNewOab = $false;
                Write-ExchangeSetupLog -Warning `
                  ("Found " + $allGals.Count + " default global address lists. You can have only one default global address list in your organization. The default offline address book will not be created.");
              }
              else
              {
                $oabAddressList = $allGals[0];
                Write-ExchangeSetupLog -Info ("OAB will be based on default GAL: " + $oabAddressList.Name);
              }
            }

            if ($createNewOab)
            {
              if ($oabGlobalWebDistribution -eq $false)
              {
                $currentAdSiteDn = (Get-ExchangeServer $RoleFqdnOrName -DomainController:$RoleDomainController).Site.DistinguishedName;
                $allOabVdirs = @(Get-OabVirtualDirectory -ADPropertiesOnly -DomainController:$RoleDomainController);
                $e15MinimumServerVersion = New-Object Microsoft.Exchange.Data.ServerVersion([Microsoft.Exchange.Data.Directory.SystemConfiguration.Server]::E15MinVersion);
                if ($allOabVdirs -ne $null -and $allOabVdirs.Count -gt 0)
                {
                  foreach ($oabVdir in $allOabVdirs)
                  {
                    if ([Microsoft.Exchange.Data.ServerVersion]::Compare($oabVdir.AdminDisplayVersion, $e15MinimumServerVersion) -gt 0)
                    {
                      $oabVdirSiteDn = (Get-ExchangeServer $oabVdir.Server -DomainController:$RoleDomainController).Site.DistinguishedName;
                      if ($oabVdirSiteDn -eq $currentAdSiteDn)
                      {
                        $oabVdirs = $oabVdir;
                        break;
                      }
                      elseif ($oabVdirs -eq $null)
                      {
                        $oabVdirs = $oabVdir;
                      }
                    }
                  }
                }

                if ($oabVdirs -ne $null)
                {
                  Write-ExchangeSetupLog -Info ("OAB will be distributed to OAB virtual directory " + $oabVdirs.Name);
                }
                else
                {
                  Write-ExchangeSetupLog -Info ("Could not find any OAB virtual directories; OAB will be configured without distribution.");
                }
              }

              try
              {
                Write-ExchangeSetupLog -Info ("Creating new default OAB.");
                $newOab = New-OfflineAddressBook `
                  -Name $oabName `
                  -AddressLists $oabAddressList `
                  -VirtualDirectories $oabVdirs `
                  -GlobalWebDistributionEnabled $oabGlobalWebDistribution `
                  -IsDefault $true `
                  -DomainController:$RoleDomainController;
              }
              catch [Microsoft.Exchange.Data.Directory.ADObjectAlreadyExistsException]
              {
                Write-ExchangeSetupLog -Warning ("Tried to create new default OAB but the object already exists; it may have been created by another instance of setup.");
              }

              if ($oabConfiguredAttributes -ne $null)
              {
                Write-ExchangeSetupLog -Info ("Setting OAB ConfiguredAttributes to: " + $oabConfiguredAttributes);
                Set-OfflineAddressBook $newOab -ConfiguredAttributes $oabConfiguredAttributes -DomainController:$RoleDomainController;
              }
            }
          }
        " was run: "Cannot find an overload for "CompareTo" and the argument count: "1".".
[02/13/2015 22:37:31.0151] [1] [ERROR] Cannot find an overload for "CompareTo" and the argument count: "1".
[02/13/2015 22:37:31.0167] [1] [ERROR-REFERENCE] Id=SystemAttendantDependent___b06ea38070354e2c9f0000c2b971306a Component=EXCHANGE14:\Current\Release\Shared\Datacenter\Setup
[02/13/2015 22:37:31.0167] [1] Setup is stopping now because of one or more critical errors.
[02/13/2015 22:37:31.0167] [1] Finished executing component tasks.
[02/13/2015 22:37:31.0214] [1] Ending processing Install-MailboxRole

Free Windows Admin Tool Kit Click here and download it now
February 13th, 2015 5:59pm

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics