Windows-Server-2016

錯誤:Exchange 2016 無法安裝 CU19 更新

  • March 10, 2021

我們有一個我正在嘗試修補的混合 Exchange 環境。我們目前正在執行 CU16,我嘗試升級到 CU18 和 CU19,但出現相同的錯誤。

在安裝過程中,它進入第 13 步(共 17 步):郵箱角色:郵箱服務然後失敗,並出現以下我無法真正解釋的錯誤消息:

Error:
The following error was generated when "$error.Clear(); 
         if ($RoleIsDatacenter -ne $true -and $RoleIsDatacenterDedicated -ne $true)
         {
         if (Test-ExchangeServersWriteAccess -DomainController $RoleDomainController -ErrorAction SilentlyContinue)
         {
         $sysMbx = $null;
         $name = "SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}";
         $dispName = "Microsoft Exchange";
         Write-ExchangeSetupLog -Info ("Retrieving mailboxes with Name=$name.");
         $mbxs = @(Get-Mailbox -Arbitration -Filter {name -eq $name} -IgnoreDefaultScope -ResultSize 1 );
         if ($mbxs.Length -eq 0)
         {
         Write-ExchangeSetupLog -Info ("Retrieving mailbox databases on Server=$RoleFqdnOrName.");
         $dbs = @(Get-MailboxDatabase -Server:$RoleFqdnOrName -DomainController $RoleDomainController);
         if ($dbs.Length -ne 0)
         {
         Write-ExchangeSetupLog -Info ("Retrieving users with Name=$name.");
         $arbUsers = @(Get-User -Filter {name -eq $name} -IgnoreDefaultScope -ResultSize 1);
         if ($arbUsers.Length -ne 0)
         {
         Write-ExchangeSetupLog -Info ("Enabling mailbox $name.");
         $sysMbx = Enable-Mailbox -Arbitration -Identity $arbUsers[0] -DisplayName $dispName -database $dbs[0].Identity;
         }
         }
         }
         else
         {
         if ($mbxs[0].DisplayName -ne $dispName )
         {
         Write-ExchangeSetupLog -Info ("Setting DisplayName=$dispName.");
         Set-Mailbox -Arbitration -Identity $mbxs[0] -DisplayName $dispName -Force;
         }
         $sysMbx = $mbxs[0];
         }

         # Set the Organization Capabilities needed for this mailbox
         if ($sysMbx -ne $null)
         {
         # We need 1 GB for uploading large OAB files to the organization mailbox
         Write-ExchangeSetupLog -Info ("Setting mailbox properties.");
         set-mailbox -Arbitration -identity $sysMbx -UMGrammar:$true -OABGen:$true -GMGen:$true -ClientExtensions:$true -MailRouting:$true -MessageTracking:$true -PstProvider:$true -MaxSendSize 1GB -Force;

         Write-ExchangeSetupLog -Info ("Configuring offline address book(s) for this mailbox");
         Get-OfflineAddressBook | where {$_.ExchangeVersion.CompareTo([Microsoft.Exchange.Data.ExchangeObjectVersion]::Exchange2012) -ge 0 -and $_.GeneratingMailbox -eq $null} | Set-OfflineAddressBook -GeneratingMailbox $sysMbx.Identity;
         }
         else
         {
         Write-ExchangeSetupLog -Info ("Cannot find arbitration mailbox with name=$name.");
         }
         }
         else
         {
         Write-ExchangeSetupLog -Info "Skipping creating E15 System Mailbox because of insufficient permission."
         }
         }
       " was run: "Microsoft.Exchange.Data.DataValidationException: Database is mandatory on UserMailbox.
  at Microsoft.Exchange.Data.Directory.SystemConfiguration.TenantConfigurationCacheableItem`1.TryRunADOperation(ADOperation operation, Boolean throwExceptions)
  at Microsoft.Exchange.Data.Directory.SystemConfiguration.TenantConfigurationCacheableItem`1.Initialize(OrganizationId organizationId, CacheNotificationHandler cacheNotificationHandler, Object state)
  at Microsoft.Exchange.Data.Directory.SystemConfiguration.TenantConfigurationCache`1.InitializeAndAddPerTenantSettings(OrganizationId orgId, Boolean allowExceptions, TSettings& perTenantSettings, Object state)
  at Microsoft.Exchange.Data.Directory.SystemConfiguration.TenantConfigurationCache`1.TryGetValue(OrganizationId orgId, Boolean allowExceptions, TSettings& perTenantSettings, Boolean& hasExpired, Object state)
  at Microsoft.Exchange.Management.RecipientTasks.GetMailbox.ConvertDataObjectToPresentationObject(IConfigurable dataObject)
  at Microsoft.Exchange.Configuration.Tasks.GetRecipientObjectTask`2.WriteResult(IConfigurable dataObject)
  at Microsoft.Exchange.Configuration.Tasks.GetTaskBase`1.WriteResult[T](IEnumerable`1 dataObjects)
  at Microsoft.Exchange.Configuration.Tasks.GetTaskBase`1.InternalProcessRecord()
  at Microsoft.Exchange.Configuration.Tasks.GetObjectWithIdentityTaskBase`2.InternalProcessRecord()
  at Microsoft.Exchange.Configuration.Tasks.GetRecipientObjectTask`2.InternalProcessRecord()
  at Microsoft.Exchange.Management.RecipientTasks.GetRecipientWithAddressListBase`2.InternalProcessRecord()
  at Microsoft.Exchange.Configuration.Tasks.Task.<ProcessRecord>b__91_1()
  at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)".

我做了一些研究,打開 ADSIEDIT.msc 並連接到預設命名上下文。打開使用者容器並查找有效使用者。打開使用者的屬性並找到名為 HomeMDB 的屬性。在記事本或任何其他文本編輯器中複製條目。

從 ADSIEDIT.msc 再次連接預設命名上下文並找到給出問題的使用者並打開屬性。找到屬性後,刪除內容並從我們複製的內容中替換它們。

重新執行安裝程序,它應該繼續安裝並安裝郵箱角色。

有關更多詳細資訊:錯誤已解決:“Exchange 2016 數據庫在使用者郵箱上是必需的”

引用自:https://serverfault.com/questions/1056477