Javascript 在CRM Dynamics 2011中查询Active Directory

Javascript 在CRM Dynamics 2011中查询Active Directory,javascript,xml,active-directory,dynamics-crm-2011,crm,Javascript,Xml,Active Directory,Dynamics Crm 2011,Crm,我希望CRM查询active directory并返回它找到的所有结果,比如“名字”。因此,例如:我在一个字段中键入'Tom',单击搜索按钮,它将返回以下内容的相关XML: 汤姆。史密斯、汤姆。琼斯、汤姆。唐克斯等 我已经阅读过了,下面的代码使我能够搜索用户名,例如“Tom.Jones” var oCommand=new RemoteCommand("UserManager","RetrieveADUserProperties"); if(oCommand!=null) {

我希望CRM查询active directory并返回它找到的所有结果,比如“名字”。因此,例如:我在一个字段中键入'Tom',单击搜索按钮,它将返回以下内容的相关XML:

汤姆。史密斯、汤姆。琼斯、汤姆。唐克斯等

我已经阅读过了,下面的代码使我能够搜索用户名,例如“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;  
      }  
    }  
  }  
}          

但我不知道CRM/AD在这方面需要什么。有人知道除了“domainAccountName”之外是否还有其他搜索词吗?

调查后,SetParameter方法只能将有限数量的参数作为其第一个参数;所有这些参数都不允许开发人员只搜索名字或姓氏

因此,最简单的选择(至少在我的情况下)是编写一个iframe插件来运行对AD的LDAP请求。请记住,与visxss等相关的常用域规则适用于此实例。任何对C#比较陌生的人都可以在这里找到编写有用解决方案的全面帮助:


调查后,SetParameter方法只能将有限数量的参数作为其第一个参数;所有这些参数都不允许开发人员只搜索名字或姓氏

因此,最简单的选择(至少在我的情况下)是编写一个iframe插件来运行对AD的LDAP请求。请记住,与visxss等相关的常用域规则适用于此实例。任何对C#比较陌生的人都可以在这里找到编写有用解决方案的全面帮助:


我们也有类似的需求,但我们的用户数量也非常多。我们的方法涉及通过在CRM中创建自定义“域联系人”实体并每晚更新实体来利用CRM。这允许我们的最终用户使用CRM中已有的快速查找、视图和其他工具。最重要的是,最终用户可以在搜索中使用通配符

为了实现这一点,我们最终编写了一个单独的应用程序,每晚查询一次AD并填充SQL数据库。然后,我们使用一个自定义的工作流步骤(从重复出现的工作流中调用)来查询数据库并根据需要更新CRM


虽然我们的目标是防止针对广告的大型查询对我们的环境产生不利影响,但最终我们为最终用户提供了一些很棒的工具,只需维护少量代码。

我们也有类似的需求,但我们的用户数也非常多。我们的方法涉及通过在CRM中创建自定义“域联系人”实体并每晚更新实体来利用CRM。这允许我们的最终用户使用CRM中已有的快速查找、视图和其他工具。最重要的是,最终用户可以在搜索中使用通配符

为了实现这一点,我们最终编写了一个单独的应用程序,每晚查询一次AD并填充SQL数据库。然后,我们使用一个自定义的工作流步骤(从重复出现的工作流中调用)来查询数据库并根据需要更新CRM


虽然目标是防止针对AD的大型查询对我们的环境产生不利影响,我们最终为最终用户提供了一些很棒的工具,只需维护少量代码。

最后,我编写了一个基于Iframe的网站,模拟管理员并查询广告。这在我的实例中非常有用,因为它允许我使用客户端activeX对象根据广告请求状态查询Lync状态。最后,我编写了一个基于Iframe的站点,模拟管理员并查询广告。这在我的实例中非常有用,因为它允许我使用客户端activeX对象根据广告请求状态查询Lync状态。
  oCommand.SetParameter("domainAccountFirstName","Tom.Jones");