我正在进行FIM 2010R2同步引擎项目,我将AD用户导入FIM并将一些信息导出到SQL表。我写了配置代码,它工作正常。
这是我的目标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