我们有一个我正在尝试修补的混合 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 数据库在用户邮箱上是必需的”