为什么我们使用 Enable-RemoteMailbox 的用户的 ExchangeGuid 为空?

为什么我们使用 Enable-RemoteMailbox 的用户的 ExchangeGuid 为空?

我们有一个混合设置,在我们的用户创建过程脚本中,我们创建 AD 对象,然后我们连接到我们的内部部署 Exchange 并运行Enable-RemoteMailbox -Identity $UserName -RemoteRoutingAddress $RemoteRoutingAddress以在 Office 365 中启用用户的邮箱。

我最近注意到的是,如果我们运行,它将返回。当我在连接到 O365 时运行时,它会给我正确的。此问题仅发生在使用创建的邮箱中,我是否遗漏了导致内部部署 Exchange 服务器看到邮箱为空白的某些内容?Get-RemoteMailbox -Identity "[email protected]" | FL *ExchangeGuid*00000000-0000-0000-0000-000000000000ExchangeGuidGet-MailboxExchangeGuidEnable-RemoteMailboxExchangeGuid

我编写了以下脚本来修复此问题:

$ProblemMailboxes = Get-RemoteMailbox * | Where-Object {$_.ExchangeGuid -eq "00000000-0000-0000-0000-000000000000"} | Sort-Object Name
foreach($Mailbox in $ProblemMailboxes) {
    $ExchangeGuid = Get-OnlineMailbox -Identity $Mailbox.UserPrincipalName | Select-Object ExchangeGuid -ExpandProperty ExchangeGuid
    Set-RemoteMailbox -Identity $Mailbox.UserPrincipalName -ExchangeGuid $ExchangeGuid
}

但我宁愿以后不必这样做,并修复我们在创建用户时遗漏的问题或步骤。

答案1

我也有这个问题。

解决方法。

现在我必须去连接到 o365 执行 get-mailbox user |fl exchangeguid

复制 GUID

转到 onprem 混合并运行

set-remoteemailbox user -exchangeguid 粘贴 GUID

然后允许用户连接到本地邮箱。

我也想知道这个问题的解决办法...

答案2

如果邮箱是直接在 Exchange Online 中创建的,则会出现这种情况,因为 Enable-RemoteMailbox 命令不会填充此属性;此外,它也不包含在 Azure AD Connect 写回属性中。MS 肯定可以改进此过程,但目前还没有。

我找到了一个脚本,用于将 exchangeguid 从 Exchange Online 复制回 On Prem。它对我有用!

https://gallery.technet.microsoft.com/office/Sync-Exchange-Online-646b88ab#content

我在将凭据存储在 XML 中时遇到了问题,因此我只是将 2 个凭据变量更改为 = Get-Credential,而不是查找 XML 文件。

我修改的两行是:

$ExchCred = Import-Clixml C:\scripts\creds\ExchScripts.xml 

$ExchCred = Get-Credential

并且

$cred = Import-Clixml C:\scripts\creds\ExchScripts.xml

$cred = Get-Credential

显然,每次运行脚本时都会提示输入凭据,这对于一次性使用来说是可以的。如果你想将其作为计划任务,最好让凭据导出部分工作。此外,请确保在用于验证 Exchange Online 的帐户上禁用 MFA。禁用后,让它静置 15 分钟,以确保在 MS 服务器上完全复制。尽管它立即停止提示 MFA,但花了一段时间才允许访问。

希望这对某人有帮助。我花了很长时间才找到解决方案。

答案3

在混合环境中,guid 匹配的唯一真正可靠的方法是在本地创建邮箱,运行 aad connect,然后在同步完成时将邮箱移动到 O365。使用启用远程邮箱时,GUID 很少匹配,因为 guid 不作为 AD 属性存在,因为它不是由 exchange 创建的。

答案4

这是混合邮箱中 ExchangeGuid 和 ArchiveGuid 的已知问题

以下 PowerShell 将查找处于这种情况的所有邮箱并为您解决:

# Connect to on-premises Exchange server PowerShell - insert your server's name in relevant place
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://**your on-premises Exchange server**/PowerShell/ -Authentication Kerberos -Credential $UserCredential
Import-PSSession $Session -DisableNameChecking -Prefix EPS # Import all cmdlets with 'EPS' prefix to avoid Exchange Online clash

# Connect to Exchange Online PowerShell
Connect-ExchangeOnline

# Get all hybrid mailboxes with a blank ExchangeGuid or ArchiveGuid
$EPSRemoteMailboxes = Get-EPSRemoteMailbox -Filter "ExchangeGuid -eq '$([GUID]::Empty)'" -ResultSize Unlimited
$EPSArchiveRemoteMailboxes = Get-EPSRemoteMailbox -Archive -Filter "ArchiveGuid -eq '$([GUID]::Empty)'" -ResultSize Unlimited

foreach ($EPSRemoteMailbox in $EPSRemoteMailboxes) {
    $EXOMailbox = Get-Mailbox -Identity $EPSRemoteMailbox.UserPrincipalName 
    $EPSRemoteMailbox | Set-EPSRemoteMailbox -ExchangeGuid $EXOMailbox.ExchangeGuid
}
                
foreach ($EPSArchiveRemoteMailbox in $EPSArchiveRemoteMailboxes) {
    $EXOArchiveMailbox = Get-Mailbox -Identity $EPSArchiveRemoteMailbox.UserPrincipalName
    $EPSArchiveRemoteMailbox | Set-EPSRemoteMailbox -ArchiveGuid $EXOArchiveMailbox.ArchiveGuid
}

https://learn.microsoft.com/en-us/exchange/troubleshoot/move-mailboxes/migrationpermanentexception-when-moving-mailboxes https://learn.microsoft.com/en-us/exchange/troubleshoot/administration/validation-errors-for-mailbox-archive-guid

相关内容