次の方法で共有


重複する属性または無効な属性により、Microsoft 365 でのディレクトリ同期が妨げる

症状

Microsoft 365 では、ディレクトリ同期が完了すると、管理者は次の電子メール メッセージの警告を受け取ります。

From: [MSOnlineServicesTeam@MicrosoftOnline.com](mailto:msonlineservicesteam@microsoftonline.com)Subject: Directory Synchronization Error Report

電子メール メッセージのエラー レポートには、次のエラー メッセージが 1 つ以上含まれている場合があります。

  • 同じプロキシ アドレスを持つ同期オブジェクトが、Microsoft Online Services ディレクトリに既に存在します。
  • ユーザー ID が見つからないため、このオブジェクトを更新できません。
  • このオブジェクトに関連付けられている次の属性には、ローカル ディレクトリ内の別のオブジェクトに既に関連付けられている可能性がある値があるため、Microsoft Online Services でこのオブジェクトを更新できません。
  • このオブジェクトに関連付けられている次の属性には、ローカル ディレクトリ サービス内の別のオブジェクトに既に関連付けられている可能性がある値があるため、このオブジェクトを更新できません: [UserPrincipalName john@contoso.com;]。 ローカル ディレクトリ内の重複する値を修正または削除します。
  • このオブジェクトに関連付けられている次の属性には、ローカル ディレクトリ サービス内の別のオブジェクトに既に関連付けられている可能性がある値があるため、このオブジェクトを更新できません: [ProxyAddresses SMTP:john@contoso.com;]。 ローカル ディレクトリ内の重複する値を修正または削除します。

さらに、Microsoft Entra ID (Connect) 同期サービスを実行している場合は、次のいずれかのエラー メッセージを含むイベント ID 6941 のインスタンスがアプリケーション ログイン イベント ビューアーに記録されます。

Event ID: 6941
Log Name: Application
Source: ADSync
Level: Error
Details:
ECMA2 MA export run caused an error. 

Error Name: AttributeValueMustBeUnique
Error Detail: Unable to update this object because the following attributes associated with this object have values that may already be associated with another object in your local directory services: [UserPrincipalName john@contoso.com;]. Correct or remove the duplicate values in your local directory. Please refer to https://support.microsoft.com/kb/2647098 for more information on identifying objects with duplicate attribute values.
Event ID: 6941
Log Name: Application
Source: ADSync
Level: Error
Details:
ECMA2 MA export run caused an error.

Error Name: InvalidSoftMatch
Error Detail: Unable to update this object because the following attributes associated with this object have values that may already be associated with another object in your local directory services: [ProxyAddresses SMTP:john@contoso.com;]. Correct or remove the duplicate values in your local directory.

原因

この問題は、オンプレミスの Active Directory Domain Services (AD DS) スキーマのユーザー オブジェクトに重複または無効なエイリアス値があり、ディレクトリ同期中にこれらのユーザー オブジェクトが AD DS スキーマから Microsoft 365 に正しく同期されていない場合に発生する可能性があります。

Microsoft 365 のすべてのエイリアス値は、特定の組織で一意である必要があります。 簡易メール転送プロトコル (SMTP) アドレスのアットマーク (@) の後に複数の一意のサフィックスがある場合でも、すべてのエイリアス値は一意である必要があります。

オンプレミス環境では、SMTP アドレスのアット マーク (@) の後のサフィックスに基づいて一意である限り、エイリアス値を持つことができます。

Microsoft 365 のクラウドで重複するエイリアス値を持つオブジェクトを作成してエイリアスを一意にした場合、1 つのエイリアスに一意の番号が追加されます。 (たとえば、重複するエイリアス値が "Albert" の場合、そのうちの 1 つが自動的に "Albert2" になります。"Albert2" が既に使用されている場合、エイリアスは "Albert3" になり、次に示します)。ただし、重複するエイリアス値を持つオブジェクトがオンプレミスの AD DS に作成された場合、ディレクトリ同期の実行時にオブジェクトの競合が発生し、オブジェクトの同期が失敗します。

解決策

この問題を解決するには、他の AD DS オブジェクトと競合する値と重複する値を特定します。 これを行うには、次のいずれかの方法を使用します。

方法 1: IdFix Microsoft Entra 同期ツール エラー修復ツールを使用する

IdFix Microsoft Entra 同期ツール エラー修復ツールを使用して、重複する属性または無効な属性を特定します。 IdFix ツールを使用して重複する属性を解決するには、次のマイクロソフト サポート技術情報の記事を参照してください。

IdFix ツールを 実行した後、2 つ以上のオブジェクトの ERROR 列に "Duplicate" 2857385表示される

方法 2: 既存のオンプレミス ユーザーを Microsoft Entra ユーザーにマップする

これを行うには、次のマイクロソフト サポート技術情報の記事を参照してください。

2641663 SMTP 照合を使用して、ディレクトリ同期のためにオンプレミスのユーザー アカウントと Microsoft 365 ユーザー アカウントを照合する方法

方法 3: ディレクトリ同期によって Microsoft Entra ID に作成されなかったオブジェクトによって発生する属性の競合を特定する

Microsoft 365 管理ツールを使用して作成された (ディレクトリ同期によって Microsoft Entra ID で作成されなかった) ユーザー オブジェクトによって発生する属性の競合を特定するには、次の手順に従います。

  1. オンプレミスの AD DS ユーザー アカウントの一意の属性を決定します。 これを行うには、Windows サポート ツールがインストールされているコンピューターで、次の手順に従います。

    1. [ スタート] をクリックし、[ 実行] をクリックし、「ldp.exe」と入力して、[ OK] をクリックします。

    2. [ 接続] をクリックし、[ 接続] をクリックし、AD DS ドメイン コントローラーのコンピューター名を入力して、[ OK] をクリックします。

    3. [ 接続] をクリックし、[ バインド] をクリックし、[ OK] をクリックします。

    4. [ 表示] をクリックし、[ ツリー ビュー] をクリックし、[ BaseDN ] ドロップダウン リストで AD DS ドメインを選択して、[OK] をクリック します

    5. ナビゲーション ウィンドウで、正しく同期されていないオブジェクトを見つけてダブルクリックします。 ウィンドウの右側にある [詳細] ウィンドウには、すべてのオブジェクト属性が一覧表示されます。 オブジェクト属性の例を次に示します。

      オブジェクト属性の例を示すスクリーンショット。

    6. userPrincipalName 属性の値と各 SMTP アドレスを複数値 proxyAddresses 属性に記録します。 これらの値は後で必要になります。

      属性名 注記
      プロキシアドレス proxyAddresses (3): x500:/o=Exchange/ou=Exchange 管理グループ (GroupName)/cn=Recipients/cn=GUID;smtp:7628376@service.contoso.com;SMTP:7628376@contoso.com; 属性ラベルの横にかっこで囲んで表示される数値は、複数値属性のプロキシ アドレス値の数を示します。 各個別のプロキシ アドレス値はセミコロン (;)で示されます。 プライマリ SMTP プロキシ アドレスの値は大文字の "SMTP:" で示されます
      ユーザープリンシパル名 7628376@contoso.com

      Ldp.exe は、Windows Server 2008 および Windows Server 2003 サポート ツールに含まれています。 Windows Server 2003 サポート ツールは、Windows Server 2003 インストール メディアに含まれています。 または、ツールを入手するには、次の Microsoft Web サイトにアクセスします。 Windows Server 2003 Service Pack 2 32 ビット サポート ツール

  2. Windows PowerShell 用 Azure Active Directory モジュールを使用して Microsoft 365 に接続します。 これを行うには、次の手順に従います。

    1. [ スタート] をクリックし、[ すべてのプログラム] をクリックし、[ Microsoft Entra ID] をクリックして、 Windows PowerShell の [Azure Active Directory モジュール] をクリックします。

    2. 表示される順序で次のコマンドを入力し、各コマンドの後に Enter キーを押します。

      $cred = get-credential
      

      メッセージが表示されたら、Microsoft 365 管理者の資格情報を入力します。

      Connect-MSOLService –credential $cred
      

      Azure AD および MSOnline PowerShell モジュールは、2024 年 3 月 30 日の時点で非推奨となります。 詳細については、非推奨に関するアップデートを参照してください。 この日以降、これらのモジュールのサポートは、Microsoft Graph PowerShell SDK への移行支援とセキュリティ修正に限定されます。 非推奨のモジュールは、2025 年 3 月 30 日まで引き続き機能します。

      Microsoft Entra ID (旧称 Azure AD) を使用するには、Microsoft Graph PowerShell に移行することをお勧めします。 移行に関する一般的な質問については、「移行に関する FAQ」を参照してください。 注: MSOnline のバージョン 1.0.x では、2024 年 6 月 30 日以降に中断が発生する可能性があります。

      コンソール ウィンドウは開いたままにします。 次の手順で使用する必要があります。

  3. Microsoft 365 で重複する userPrincipalName 属性を確認します。

    手順 2 で開いたコンソール接続で、表示される順序で次のコマンドを入力し、各コマンドの後に Enter キーを押します。

    $userUPN = "<search UPN>"
    

    このコマンドでは、プレースホルダー "search UPN" は、手順 1f で記録した UserPrincipalName 属性を表します。

    get-msoluser –UserPrincipalName $userUPN | where {$_.LastDirSyncTime -eq $null}
    

    コンソール ウィンドウは開いたままにします。 次の手順でもう一度使用します。

  4. proxyAddressesattributes が重複していないかどうかを確認します。 手順 2 で開いたコンソール接続で、表示される順序で次のコマンドを入力し、各コマンドの後に Enter キーを押します。

    $UserCredential = Get-Credential
    Connect-ExchangeOnline -Credential $UserCredential
    
  5. 手順 1f で記録したプロキシ アドレス エントリごとに、表示される順序で次のコマンドを入力し、各コマンドの後に Enter キーを押します。

    $proxyAddress = "<search proxyAddress>"
    

    このコマンドでは、プレースホルダー "search proxyAddress" は、手順 1f で記録した proxyAddresses 属性の値を表します。

    Get-EXOMailbox | Where {[string] $str = ($_.EmailAddresses); $str.tolower().Contains($proxyAddress.tolower()) -eq $true} | foreach {get-MsolUser -ObjectID $_.ExternalDirectoryObjectId | Where {($_.LastDirSyncTime -eq $null)}}
    

手順 3 と 4 でコマンドを実行した後に返される項目は、ディレクトリ同期によって作成されなかったユーザー オブジェクトと、正しく同期されていないオブジェクトと競合する属性を持つユーザー オブジェクトを表します。

競合する属性値または無効な属性値を特定したら、次のマイクロソフト サポート技術情報の記事の手順に従って問題のトラブルシューティングを行います。

2643629 Azure Active Directory 同期ツールを使用すると 1 つ以上のオブジェクトが同期しない

詳細情報

この記事の Windows PowerShell コマンドには、Windows PowerShell 用の Azure Active Directory モジュールが必要です。 Windows PowerShell 用 Azure Active Directory モジュールの詳細については、次の Microsoft Web サイトを参照してください。

Microsoft Entra コマンドレット

まだ助けが必要ですか? Microsoft コミュニティに移動します。