我们正在 M365 中运行 Exchange 混合模式,其中包含远程邮箱和存档。我们的一名员工几个月前离职,因此他们的邮箱被软删除/保留。他们的 AD 对象只是被禁用(从未被删除),因此当它通过 Entra Connect 恢复并同步回来时,会创建一个具有相同别名但邮箱为空的新 M365 用户(这很好)。
我们的问题是,AD 用户仍然拥有该用户的先前 msExchArchiveGUID,并且此存档在 EOL 中仍被软删除,但同样,M365 中的用户是该用户的不同版本。我需要弄清楚如何告诉 AD 为现在处于活动状态的 M365 用户创建一个新的(空)存档。
细节:
在 EAC 中:
如果我运行:Get-RemoteMailbox returningUser | fl displayname, ArchiveGuid
它会从 AD 中的 msExchArchiveGUID 属性报告:
ArchiveGuid : some-legit-archive-guid-number
在 EOL 中:
如果我运行:Get-Mailbox returningUser | fl archiveguid
我会得到:
ArchiveGuid : 00000000-0000-0000-0000-000000000000
但是,如果我运行:Get-EXOMailbox -SoftDeletedMailbox -Archive | where { $_.alias -eq 'returningUser' } | select Guid
我得到:
Guid
---
some-legit-archive-guid-number
我尝试过的方法:删除基于混合的档案,同步,然后重新添加:
在 EAC 中:Disable-RemoteMailbox returningUser -Archive
运行 Entra Connect,一切看起来都很好。AD 中的 msExchArchiveGUID 为空。当我运行Enable-RemoteMailbox returningUser -Archive
烦人的先前 msExchArchiveGUID 时返回。
我读过很多不匹配的例子,其中的解决方案是告诉 EAC 使用存档 GUID 的 EOL 版本,但在这种情况下,EOL 似乎无法使用 GUID 的 EAC 版本,因为它已被软删除并与之前的工件用户绑定。
如果有人知道如何告诉 EAC 停止查找(无论它在哪里查找)之前的 ArchiveGUID 并仅发布一个新的档案,我将不胜感激!
谢谢!
最后说明:如果我运行这个:
Get-MsolUser -HasErrorsOnly | fl DisplayName,UserPrincipalName,@{Name="Error";Expression={($_.errors[0].ErrorDetail.objecterrors.errorrecord.ErrorDescription)}}
错误是:
{The value "some-legit-archive-guid-number" of
property "ArchiveGuid" is used by another recipient object.
Please specify a unique value.}
(又名相同的软删除 GUID)
答案1
最终的解决方案是直接改变AD对象属性:
虽然 EAC 已启用邮箱存档,但我必须直接进入 AD 对象属性并清除:
- msExchArchiveGUID
- msExchArchive 名称
- msExchArchiveStatus(设置为 0)
然后,当同步运行时,它会产生一个新的错误:
Failed to enable the new cloud archive 00000000-0000-0000-0000-000000000000 of mailbox
some-mailbox-guid-id because a different archive [new-archive-guid-id] exists.
To enable the new archive, first disable the archive on-premises.
After the next Dirsync sync cycle, enable the archive on-premises again.
一旦出现此错误,我就会去 Guid 到十六进制转换器并将 [new-archive-guid-id] 转换为十六进制。
最后,我回到 AD 并:
- msExchArchiveGUID <-- 新的十六进制值
- msExchArchiveName <-- 原始存档名称
- msExchArchiveStatus(设置为 1)
无论出于什么原因,仅仅禁用 EAC 中的存档是不够的 - 必须在存档“开启”/执行同步时清除它们。
我还得继续跑步:
Get-MsolUser -HasErrorsOnly | fl DisplayName,UserPrincipalName,@{Name="Error";Expression={($_.errors[0].ErrorDetail.objecterrors.errorrecord.ErrorDescription)}}
在这些步骤中,以便跟踪强制 Entra Connect 同步之间的错误状态。
如果有人知道这个 Get-MSolUser 命令的 MSGraph Powershell 等效版本,那就太好了。谢谢!