Почему ExchangeGuid пуст для пользователя, для которого мы используем Enable-RemoteMailbox?

Почему ExchangeGuid пуст для пользователя, для которого мы используем Enable-RemoteMailbox?

У нас гибридная установка, и в нашем скрипте процесса создания пользователя мы создаем объект 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 hybrid и запустить

set-remotemailbox 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, поэтому я просто изменил две переменные учетных данных на = 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

Очевидно, что это будет запрашивать учетные данные каждый раз, когда вы запускаете скрипт, что нормально для одноразового использования. Если вы хотите, чтобы это было запланированной задачей, вам лучше всего заставить часть экспорта учетных данных работать. Кроме того, убедитесь, что вы ОТКЛЮЧИЛИ MFA для учетной записи, которую вы используете для аутентификации в Exchange Online. После отключения оставьте его на 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

Связанный контент