我正在为Microsoft Identity Manager(FIM / MIM)编写规则扩展,但是有问题。我想要的是:我从csentry["Manager"].Value
中获得了用于搜索Active Directory的值。当我找到所需的对象时,将获得其DistinguishedName并将其保存到metaverse属性管理器中。像这样:mventry["Manager"].Value = MDN "Manager"
不幸的是,它失败并显示以下错误:
System.InvalidOperationException:无法访问属性管理器。 MV对象上无法访问参考值。在 Microsoft.MetadirectoryServices.Impl.AttributeImpl.SetSingleValuedAttributeValue(对象 价值) Mms_ManagementAgent_HRMAExtension.MAExtensionObject.Microsoft.MetadirectoryServices.IMASynchronization.MapAttributesForImport(String FlowRuleName,CSEntry csentry,MVEntry mventry) C:\ Users \ MIMS-Admin \ Documents \ HRMAExtension \ HRMAExtension.cs:第162行
这是第162行:
mventry["Manager"].Value = MDN;
如何在metaverse中设置Manager属性的参考值?
这是我正在使用的代码:
case "LookUpDN":
var MDN = string.Empty;
if (mventry["Manager"].IsPresent)
{
// Do nothing ManagerDN distinguished name is present
}
else
{
if (csentry["Manager"].Value !="0")
{
String[] DomainArray = new string[] { "D1", "D2", "D3", "D4" };
foreach (string Domain in DomainArray)
{
DirectoryEntry dir = new DirectoryEntry("LDAP://DC="+Domain+",DC=COM");
DirectorySearcher search = new DirectorySearcher(dir);
search.Filter = "(&(objectClass=user)(EmployeeID=" + csentry["Manager"] + "))";
SearchResult searchresult = search.FindOne();
if (searchresult !=null)
{
MDN = searchresult.GetDirectoryEntry().Properties["distinguishedName"].Value.ToString();
}
}
}
mventry["Manager"].Value = MDN;
}
break;
答案 0 :(得分:0)
问题是DN(DistinguisedName)被用作参考,无法更改。可以将其视为数据库中的主键/外键。 Metaverse中的Manager
字段被指定为“参考”字段之一,您不能像这样修改它。