在CRM Dynamics 2011中查询Active Directory
Querying Active Directory in CRM Dynamics 2011
我希望CRM查询活动目录并返回它找到的所有结果,比如"名字"。因此,例如:我在字段上键入"Tom",单击搜索按钮,它将返回的相关XML
Tom Smith、Tom Jones、Tom Tonks等
我读了很多遍,下面的代码使我能够搜索用户名,例如"Tom Jones"
var oCommand=new RemoteCommand("UserManager","RetrieveADUserProperties");
if(oCommand!=null)
{
oCommand.SetParameter("domainAccountName","Tom.Jones");
var oResult=oCommand.Execute();
if(oResult.Success&&!IsNull(oResult.ReturnValue)&&oResult.ReturnValue.length>0)
{
var firstName = "";
var lastName ="";
for(
var oUserXmlDoc=loadXmlDocument(oResult.ReturnValue),
oNodeList=oUserXmlDoc.documentElement.childNodes,i=0;
i<oNodeList.length;
i++
)
{
var oNode=oNodeList.item(i);
if (oNode.tagName == "firstname")
{
firstName = oNode.text;
} else if(oNode.tagName == "lastname") {
lastName = oNode.text;
}
}
}
}
(来源:Technocratica)
但只有在输入了正确的用户名的情况下,它才会返回结果。
实际上,我需要查询以下内容:
oCommand.SetParameter("domainAccountFirstName","Tom.Jones");
但我不知道CRM/AD在这方面正在寻找什么。有人知道除了"domainAccountName"之外还有其他搜索词吗?
我们也有类似的需求,但我们的用户数量也非常多。我们的方法包括通过在CRM中创建一个自定义的"域联系人"实体并每晚更新实体来利用CRM。这允许我们的最终用户使用CRM中已有的快速查找、视图和其他工具。最棒的是,最终用户可以在搜索中使用通配符。
为了便于实现这一点,我们最终编写了一个单独的应用程序,该应用程序每晚查询一次AD并填充SQL数据库。然后,我们使用从重复出现的工作流中调用的自定义工作流步骤来查询数据库并根据需要更新CRM。
虽然我们的目标是防止针对AD的大型查询对我们的环境产生不利影响,但我们最终为最终用户提供了一些只需少量代码即可维护的优秀工具。
经过调查,SetParameter方法只能将有限数量的参数作为其第一个参数;这些参数都不允许开发人员只搜索名字或姓氏。
因此,最简单的选择(至少在我的情况下)是编写一个iframe插件,该插件运行对AD的LDAP请求。请记住,针对XSS等的常见域规则适用于此实例。任何对C#相对陌生的人都会在这里找到编写有用解决方案的全面帮助:
http://msdn.microsoft.com/en-us/library/System.DirectoryServices.aspx
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- j查询utc offSets的时差
- 如何有效地将游戏数据存储在URL查询字符串中
- 如何处理node.js节点mongodb中的连接和查询队列
- 如何从 HTML 查询中删除项目
- 从查询字符串参数推断出正确的数据类型
- 将curl查询转换为jQuery.ajax()
- 触发媒体查询断点时刷新页面
- 使用DynamoDB查询返回
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- 如何将PHP get查询转换为Meteor's HTTP.get()
- AngularJS:获取链接中没有哈希的查询字符串值
- 捕获初始RedQueryBuilder查询中的SQL问题
- AngularJS,如何更改查询字符串
- 具有大型几何图形的基于沙发的空间查询
- 在php中提交数据时,如果某些值为null,而某些值为非null,如何进行查询
- o数据扩展查询在SystemUserRolesSet上不起作用
- Xpath运行缓慢的查询
- Solr查询以按日期月份获取数据&年
- 在CRM Dynamics 2011中查询Active Directory