我們採用混合設置,在使用者建立過程腳本中建立 AD 對象,然後連接到本機 Exchange 並執行Enable-RemoteMailbox -Identity $UserName -RemoteRoutingAddress $RemoteRoutingAddress
以在 Office 365 中啟用使用者信箱。
我最近注意到的是,如果我們運行它,它將返回為.當我在連接到 O365 的情況下運行時,它會給我正確的.此問題僅發生在使用 建立的郵箱中,我是否遺漏了導致本機 Exchange 伺服器看到郵件信箱為空的內容?Get-RemoteMailbox -Identity "[email protected]" | FL *ExchangeGuid*
00000000-0000-0000-0000-000000000000
ExchangeGuid
Get-Mailbox
ExchangeGuid
Enable-RemoteMailbox
ExchangeGuid
我編寫了以下腳本來解決此問題:
$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
轉到本地混合並運行
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 中時遇到了問題,因此我只是將 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
指南在混合環境中匹配的唯一真正可靠的方法是在本地建立郵箱,運行 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