1

AD ユーザーを FIM にインポートし、いくつかの情報を SQL テーブルにエクスポートする FIM 2010R2 同期エンジン プロジェクトを実行しています。プロビジョニング コードを作成しましたが、正常に動作します。

これが私のターゲットSQLテーブルです。

CREATE TABLE [dbo].[tbl_FGPP_Members](
    [MemberObjectGUID] [varbinary](50) NULL,
    [MemberDN] [nvarchar](255) NOT NULL,
    [MemberObjectType] [nvarchar](10) NOT NULL,
    [Member_ADDomain] [nvarchar](16) NULL,
    [Member_sAMAccountName] [nvarchar](64) NULL
) ON [PRIMARY]

SQL 用の FIM 管理エージェントで、MemberDN をアンカーとして設定しました。つまり、プロビジョニング コードからのみ書き込むことができ、広告ユーザーから識別名を直接渡すことはできません。

ただし、広告ユーザー情報が SQL に取り込まれた後、その広告ユーザーの名前が変更されたり、広告内で移動されたりすると、distinguishedName が変更されます。これらの変更を再インポートするときに、FIM で MemberDN 列を更新できるようにします。これにはフロー ルールを設定できないため (MemberDN は読み取り専用であると表示されているため)、mvobject の次の条件を満たしている場合は、プロビジョニング コードから次のことを実行してみました。

    if(sqlFGPPUser.Connectors.Count == 1)
{
 updateFGPPUsersInSQL(mventry, sqlFGPPUser);
}

機能は次のとおりです。

void updateFGPPUsersInSQL(MVEntry mventry, ConnectedMA sqlFGPPUser)
        {
            CSEntry csentry;
            ReferenceValue dn;

            csentry = sqlFGPPUser.Connectors.ByIndex[0];
            dn = sqlFGPPUser.EscapeDNComponent(mventry["ADdistinguishedName"].Value);

            if (mventry["ADdistinguishedName"].Value.ToLower() != csentry.DN.ToString().ToLower())
            {
                try
                {
                    csentry.DN = dn;
                }
                catch (Exception Ex)
                {
                    throw new Exception("Exception Message: Exception encountered while renaming the MemberDN " + Ex.Message.ToString());
                }
            }
        }

基本的に私がやっていることは、名前の変更が発生したかどうかを確認することです。それ以外の場合は、実行中の同期実行プロファイルのすべての mvobject に対して毎回実行されます。

ただし、実行するとエラーが発生します。広告で名前が変更/移動されたユーザーの場合、それらの変更をインポートし、同期を実行すると次のようになります。

System.Exception: Exception Message: Exception encountered while renaming the MemberDN attribute MemberDN is read-only
    at Mms_Metaverse.MVExtensionObject.updateFGPPUsersInSQL(MVEntry& mventry, ConnectedMA& sqlFGPPUser) in D:\FIM C# Code\FGPP100\FGPP100\MVExtension\MVExtension.cs:line 526
    at Mms_Metaverse.MVExtensionObject.Microsoft.MetadirectoryServices.IMVSynchronization.Provision(MVEntry mventry) in D:\FIM C# Code\FGPP100\FGPP100\MVExtension\MVExtension.cs:line 566

更新された AdDistinguishedName で MemberDN 列を更新するにはどうすればよいですか? :(

ありがとうございました。GT

4

0 に答える 0