分享方式:


針對使用 Microsoft Entra Connect 同步執行的密碼雜湊同步處理進行疑難排解

本主題提供如何針對密碼雜湊同步處理問題進行疑難排解的步驟。 如果密碼未如預期般同步,可能會影響一部分使用者或所有使用者。

針對具有 1.1.614.0 版或更新版本的 Microsoft Entra 連線 部署,請使用精靈中的疑難解答工作來針對密碼哈希同步處理問題進行疑難解答:

對於 1.1.524.0 版或更新版本的部署,有一個診斷 Cmdlet 可讓您針對密碼雜湊同步處理問題進行疑難排解:

針對舊版的 Microsoft Entra 連線 部署:

未同步任何密碼:使用疑難排解工作進行疑難排解

您可以使用疑難排解工作來查明未同步任何密碼的原因。

注意

疑難解答工作僅適用於 Microsoft Entra 連線 1.1.614.0 版或更新版本。

執行疑難排解工作

針對未同步任何密碼的問題進行疑難排解:

  1. 使用 [以 管理員 istrator 執行] 選項,在 Microsoft Entra 連線 伺服器上開啟新的 Windows PowerShell 會話。

  2. 執行 Set-ExecutionPolicy RemoteSignedSet-ExecutionPolicy Unrestricted

  3. 啟動 Microsoft Entra Connect 精靈。

  4. 瀏覽至 [其他工作] 頁面,選取 [疑難排解],然後按 [下一步]

  5. 在 [疑難排解] 頁面上,按一下 [啟動],以在 PowerShell 中啟動疑難排解功能表。

  6. 在主功能表中,選取 [針對密碼雜湊同步處理進行疑難排解]

  7. 在子功能表中,選取 [密碼雜湊同步處理完全無法運作]

了解疑難排解工作的結果

疑難排解工作會執行下列檢查:

  • 驗證是否已為您的 Microsoft Entra 租使用者啟用密碼哈希同步處理功能。

  • 驗證 Microsoft Entra 連線 伺服器不在預備模式中。

  • 針對每個現有的內部部署 Active Directory 連接器 (對應至現有的 Active Directory 樹系):

    • 確認已啟用密碼雜湊同步處理功能。

    • 在「Windows 應用程式事件記錄」中搜尋密碼雜湊同步處理活動訊號事件。

    • 針對內部部署 Active Directory 連接器下的每個 Active Directory 網域:

      • 驗證網域是否可從 Microsoft Entra 連線 伺服器連線。

      • 確認內部部署 Active Directory 連接器所使用的 Active Directory Domain Services (AD DS) 帳戶具有密碼雜湊同步處理所需的正確使用者名稱、密碼及權限。

下圖說明在單一網域、內部部署 Active Directory 拓撲上,執行此 Cmdlet 的結果:

密碼哈希同步處理的診斷輸出

本節的其餘部分說明工作所傳回的特定結果和對應的問題。

未啟用密碼哈希同步處理功能

如果您尚未使用 Microsoft Entra 連線 精靈啟用密碼哈希同步處理,則會傳回下列錯誤:

未啟用密碼哈希同步處理

Microsoft Entra 連線 伺服器處於預備模式

如果 Microsoft Entra 連線 伺服器處於預備模式,則暫時停用密碼哈希同步處理,並傳回下列錯誤:

Microsoft Entra 連線 伺服器處於預備模式

沒有密碼雜湊同步處理活動訊號事件

每個內部部署 Active Directory 連接器都有自己的密碼雜湊同步處理通道。 當密碼雜湊同步處理通道已建立,而且沒有任何密碼變更需要同步時,在「Windows 應用程式事件記錄檔」下每隔 30 分鐘會產生一次活動訊號事件 (EventId 654)。 對於每個內部部署 Active Directory 連接器,此 Cmdlet 會搜尋過去三小時內對應的活動訊號事件。 如果找不到活動訊號事件,則會傳回下列錯誤:

沒有密碼哈希同步處理心跳事件

AD DS 帳戶沒有正確的權限

如果內部部署 Active Directory 連接器用來同步密碼雜湊的 AD DS 帳戶沒有適當的權限,則會傳回下列錯誤:

此螢幕快照顯示 AD DS 帳戶的使用者名稱或密碼不正確時所傳回的錯誤。

不正確的 AD DS 帳戶使用者名稱或密碼

如果內部部署 Active Directory 連接器用來同步密碼雜湊的 AD DS 帳戶有不正確的使用者名稱或密碼,則會傳回下列錯誤:

不正確的認證

一個物件未同步密碼:使用疑難排解工作進行疑難排解

您可以使用疑難排解工作來判斷一個物件未同步密碼的原因。

注意

疑難解答工作僅適用於 Microsoft Entra 連線 1.1.614.0 版或更新版本。

執行診斷 Cmdlet

若要針對特定使用者物件的問題進行疑難排解:

  1. 使用 [以 管理員 istrator 執行] 選項,在 Microsoft Entra 連線 伺服器上開啟新的 Windows PowerShell 會話。

  2. 執行 Set-ExecutionPolicy RemoteSignedSet-ExecutionPolicy Unrestricted

  3. 啟動 Microsoft Entra Connect 精靈。

  4. 瀏覽至 [其他工作] 頁面,選取 [疑難排解],然後按 [下一步]

  5. 在 [疑難排解] 頁面上,按一下 [啟動],以在 PowerShell 中啟動疑難排解功能表。

  6. 在主功能表中,選取 [針對密碼雜湊同步處理進行疑難排解]

  7. 在子功能表中,選取 [未同步特定使用者帳戶的密碼]

了解疑難排解工作的結果

疑難排解工作會執行下列檢查:

  • 檢查 Active Directory 連接器空間、Metaverse 和 Microsoft Entra 連接器空間中的 Active Directory 物件狀態。

  • 確認有已啟用密碼雜湊同步處理的同步處理規則,且已套用至 Active Directory 物件。

  • 試著擷取並顯示上次嘗試同步物件密碼的結果。

下圖說明針對單一物件的密碼雜湊同步處理進行疑難排解時,執行此 Cmdlet 的結果:

密碼哈希同步處理的診斷輸出 - 單一物件

本節的其餘部分說明 Cmdlet 所傳回的特定結果和對應的問題。

Active Directory 物件不會匯出至 Microsoft Entra ID

此 內部部署的 Active Directory 帳戶的密碼哈希同步處理失敗,因為 Microsoft Entra 租用戶中沒有對應的物件。 系統會傳回下列錯誤:

遺漏 Microsoft Entra 物件

使用者有暫時密碼

舊版的 Microsoft Entra 連線 不支援同步處理暫存密碼與 Microsoft Entra ID。 如果對內部部署 Active Directory 使用者設定 [在下次登入時變更密碼] 選項,密碼就視為暫時。 下列錯誤會傳回這些舊版:

暫存密碼未匯出

若要啟用暫存密碼同步處理,您必須安裝 Microsoft Entra 連線 2.0.3.0 版或更高版本,且必須啟用 ForcePasswordChangeOnLogon 功能

上次嘗試同步密碼沒有結果

根據預設,Microsoft Entra 連線 會儲存密碼哈希同步處理嘗試的結果七天。 如果選取的 Active Directory 物件沒有可用的結果,則會傳回下列警告:

單一物件的診斷輸出 - 沒有密碼同步記錄

未同步任何密碼:使用診斷 Cmdlet 進行疑難排解

您可以使用 Invoke-ADSyncDiagnostics Cmdlet 來查明未同步任何密碼的原因。

注意

Cmdlet Invoke-ADSyncDiagnostics 僅適用於 Microsoft Entra 連線 1.1.524.0 版或更新版本。

執行診斷 Cmdlet

針對未同步任何密碼的問題進行疑難排解:

  1. 使用 [以 管理員 istrator 執行] 選項,在 Microsoft Entra 連線 伺服器上開啟新的 Windows PowerShell 會話。

  2. 執行 Set-ExecutionPolicy RemoteSignedSet-ExecutionPolicy Unrestricted

  3. 執行 Import-Module ADSyncDiagnostics

  4. 執行 Invoke-ADSyncDiagnostics -PasswordSync

一個物件未同步密碼:使用診斷 Cmdlet 進行疑難排解

您可以使用 Invoke-ADSyncDiagnostics Cmdlet 來判斷一個物件未同步密碼的原因。

注意

Cmdlet Invoke-ADSyncDiagnostics 僅適用於 Microsoft Entra 連線 1.1.524.0 版或更新版本。

執行診斷 Cmdlet

針對未同步任何使用者密碼的問題進行疑難排解:

  1. 使用 [以 管理員 istrator 執行] 選項,在 Microsoft Entra 連線 伺服器上開啟新的 Windows PowerShell 會話。

  2. 執行 Set-ExecutionPolicy RemoteSignedSet-ExecutionPolicy Unrestricted

  3. 執行 Import-Module ADSyncDiagnostics

  4. 執行下列 Cmdlet:

    Invoke-ADSyncDiagnostics -PasswordSync -ADConnectorName <Name-of-AD-Connector> -DistinguishedName <DistinguishedName-of-AD-object>
    

    例如:

    Invoke-ADSyncDiagnostics -PasswordSync -ADConnectorName "contoso.com" -DistinguishedName "CN=TestUserCN=Users,DC=contoso,DC=com"
    

未同步任何密碼:手動疑難排解步驟

請依照下列步驟來判斷未同步任何密碼的原因:

  1. Connect 伺服器是否是處於預備模式? 處於預備模式的伺服器不會同步處理任何密碼。

  2. 執行取得密碼同步設定的狀態一節中的指令碼。 它可讓您大致了解密碼同步設定作業。

    來自密碼同步設定的PowerShell腳本輸出

  3. 如果未在 Microsoft Entra ID 中啟用此功能,或未啟用同步通道狀態,請執行 連線 安裝精靈。 選取 [自訂同步處理選項] 並取消選取密碼同步。這項變更會暫時停用此功能。 然後再次執行精靈並重新啟用密碼同步處理。再次執行指令碼,確認組態正確無誤。

  4. 查看事件記錄中是否有錯誤。 尋找下列事件,這些事件會指出問題所在︰

    來源:“目錄同步處理”
    標識碼:0、611、652、655

    如果您看到這些事件,則發生連線問題。 事件記錄訊息包含發生問題的樹系資訊。

  5. 如果您沒有看到任何活動訊號,或任何其他操作都沒有作用,請執行觸發所有密碼的完整同步。 只執行一次指令碼。

  6. 請參閱<針對一個未同步密碼的物件進行疑難排解>一節。

連線問題

您是否具有 Microsoft Entra 識別符的連線能力?

帳戶是否具備可讀取所有網域中密碼雜湊的必要權限? 如果您使用 [快速設定] 來安裝 Connect,權限應該已經正確。

如果您使用自訂安裝,請執行下列動作來手動設定權限:

  1. 若要尋找 Active Directory 連接器所使用的帳戶,請啟動 Synchronization Service Manager

  2. 移至 [連接器],然後尋找您要進行疑難排解的內部部署 Active Directory 樹系。

  3. 選取 [連接器],然後按一下 [屬性]

  4. 前往 [連線至 Active Directory 樹系]

    Active Directory 連接器所使用的帳戶
    記下使用者名稱和帳戶所在的網域。

  5. 啟動 Active Directory 使用者和電腦,然後確認您稍早發現的帳戶,已在樹系中所有網域的根目錄上設定下列權限:

    • 複寫目錄變更
    • 複寫目錄變更 (全部)
  6. Microsoft Entra 連線 可連線域控制器嗎? 如果 Connect 伺服器無法連線到所有網域控制站,請設定 [只使用慣用的網域控制站]

    Active Directory 連接器使用的域控制器

  7. 返回 Synchronization Service Manager,並設定目錄磁碟分割

  8. 在 [選取目錄分割] 中選取您的網域,選取 [只使用慣用的網域控制站] 核取方塊,然後按一下 [設定]

  9. 在清單中,輸入 Connect 應該用來進行密碼同步的網域控制站。此相同清單也用於匯入和匯出。 針對您的所有網域執行這些步驟。

注意

若要套用這些變更,請重新啟動 Microsoft Entra ID Sync (ADSync) 服務。

  1. 如果此指令碼顯示沒有活動訊號,請執行觸發所有密碼的完整同步中的指令碼。

一個物件未同步密碼:手動疑難排解步驟

您可以藉由檢閱物件的狀態,輕鬆地針對密碼雜湊同步處理問題進行疑難排解。

  1. Active Directory 使用者和電腦中,搜尋使用者,然後確認已清除 [使用者必須在下次登入時變更密碼] 核取方塊。

    Active Directory 生產力密碼

    如果選取此核取方塊,請要求使用者登入並變更密碼。 暫存密碼不會與 Microsoft Entra ID 同步。

  2. 如果 Active Directory 中的密碼看起來正確,請在同步處理引擎中追蹤使用者。 依照使用者從 內部部署的 Active Directory 到 Microsoft Entra ID,您可以看到物件上是否有描述性錯誤。

    a. 啟動 Synchronization Service Manager

    b. 按一下 [連接器]

    c. 選取使用者所在的 Active Directory 連接器

    d. 選取 [搜尋連接器空間]

    e. 在 [範圍] 方塊中,選取 [DN 或錨點],然後輸入您要進行疑難排解之使用者的完整 DN。

    使用 DN 搜尋連接器空間中的使用者

    f. 找出您要搜尋的使用者,然後按一下 [屬性] 來查看所有屬性。 如果該使用者不在搜尋結果中,請確認您的篩選規則,且務必執行套用並驗證變更,如此 Connect 中才會顯示該使用者。

    .g 若要查看物件在過去一週的密碼同步詳細資料,請按一下 [記錄]

    對象記錄檔詳細數據

    如果對象記錄檔是空的,Microsoft Entra 連線 就無法從 Active Directory 讀取密碼哈希。 請繼續進行連線錯誤疑難排解。 如果您看到 [成功] 以外的任何其他值,請參考密碼同步記錄中的表格。

    h. 選取 [歷程] 索引標籤,並確認至少有一個同步規則的 [PasswordSync] 資料行是 True。 在預設組態中,同步規則的名稱是 In from AD - User AccountEnabled

    關於使用者的譜系資訊

    i. 按一下 [Metaverse 物件屬性] 來顯示使用者屬性清單。

    顯示 Metaverse 物件屬性之使用者屬性清單的螢幕快照。

    確認沒有任何 cloudFiltered 屬性存在。 確定網域屬性 (domainFQDN 和 domainNetBios) 具有預期的值。

    j. 按兩下 [連線 ors] 索引標籤。請確定您看到 內部部署的 Active Directory 和 Microsoft Entra ID 的連接器。

    Metaverse 資訊

    k. 選取代表 Microsoft Entra ID 的數據列,按兩下 [屬性],然後按兩下 [譜系] 索引標籤。連接器空間對象應該在 PasswordSync 資料行中將輸出規則設定為 True。 在預設組態中,同步規則的名稱是 Out to Microsoft Entra ID - User Join

    連線 or Space 物件屬性對話方塊

密碼同步記錄

[狀態] 欄可以有下列值︰

狀態 名描述
成功 已成功同步處理密碼。
FilteredByTarget 密碼會設為 [使用者必須在下次登入時變更密碼] 。 未同步處理密碼。
NoTargetConnection Metaverse 或 Microsoft Entra 連接器空間中沒有物件。
SourceConnectorNotPresent 在內部部署 Active Directory 連接器空間中找不到任何物件。
TargetNotExportedToDirectory Microsoft Entra 連接器空間中的物件尚未匯出。
MigratedCheckDetailsForMoreInfo 記錄項目建立於組建 1.0.9125.0 之前,並且以其舊版的狀態顯示。
錯誤 服務傳回未知的錯誤。
未知 嘗試處理密碼雜湊的批次時發生錯誤。
MissingAttribute Microsoft Entra Domain Services 所需的特定屬性(例如 Kerberos 哈希)無法使用。
RetryRequestedByTarget Microsoft Entra Domain Services 所需的特定屬性(例如 Kerberos 哈希)先前無法使用。 會嘗試重新同步處理使用者的密碼雜湊。

協助疑難排解的指令碼

取得密碼同步設定的狀態

Import-Module ADSync
$connectors = Get-ADSyncConnector
$aadConnectors = $connectors | Where-Object {$_.SubType -eq "Windows Azure Active Directory (Microsoft)"}
$adConnectors = $connectors | Where-Object {$_.ConnectorTypeName -eq "AD"}
if ($aadConnectors -ne $null -and $adConnectors -ne $null)
{
    if ($aadConnectors.Count -eq 1)
    {
        $features = Get-ADSyncAADCompanyFeature
        Write-Host
        Write-Host "Password sync feature enabled in your Azure AD directory: "  $features.PasswordHashSync
        foreach ($adConnector in $adConnectors)
        {
            Write-Host
            Write-Host "Password sync channel status BEGIN ------------------------------------------------------- "
            Write-Host
            Get-ADSyncAADPasswordSyncConfiguration -SourceConnector $adConnector.Name
            Write-Host
            $pingEvents =
                Get-EventLog -LogName "Application" -Source "Directory Synchronization" -InstanceId 654  -After (Get-Date).AddHours(-3) |
                    Where-Object { $_.Message.ToUpperInvariant().Contains($adConnector.Identifier.ToString("D").ToUpperInvariant()) } |
                    Sort-Object { $_.Time } -Descending
            if ($pingEvents -ne $null)
            {
                Write-Host "Latest heart beat event (within last 3 hours). Time " $pingEvents[0].TimeWritten
            }
            else
            {
                Write-Warning "No ping event found within last 3 hours."
            }
            Write-Host
            Write-Host "Password sync channel status END ------------------------------------------------------- "
            Write-Host
        }
    }
    else
    {
        Write-Warning "More than one Azure AD Connectors found. Please update the script to use the appropriate Connector."
    }
}
Write-Host
if ($aadConnectors -eq $null)
{
    Write-Warning "No Azure AD Connector was found."
}
if ($adConnectors -eq $null)
{
    Write-Warning "No AD DS Connector was found."
}
Write-Host

觸發所有密碼的完整同步處理

注意

只執行一次這個指令碼。 如果需要執行多次,則表示問題出在其他地方。 若要針對問題進行疑難排解,請連絡 Microsoft 支援服務。

您可以使用下列指令碼來觸發所有密碼的完整同步︰

$adConnector = "<CASE SENSITIVE AD CONNECTOR NAME>"
$aadConnector = "<CASE SENSITIVE AAD CONNECTOR NAME>"
Import-Module adsync
$c = Get-ADSyncConnector -Name $adConnector
$p = New-Object Microsoft.IdentityManagement.PowerShell.ObjectModel.ConfigurationParameter "Microsoft.Synchronize.ForceFullPasswordSync", String, ConnectorGlobal, $null, $null, $null
$p.Value = 1
$c.GlobalParameters.Remove($p.Name)
$c.GlobalParameters.Add($p)
$c = Add-ADSyncConnector -Connector $c
Set-ADSyncAADPasswordSyncConfiguration -SourceConnector $adConnector -TargetConnector $aadConnector -Enable $false
Set-ADSyncAADPasswordSyncConfiguration -SourceConnector $adConnector -TargetConnector $aadConnector -Enable $true

下一步