• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

如何知道用户属于哪一个ActiveDirectory组

发布: 2007-6-21 12:06 | 作者:   | 来源:   | 查看: 17次 | 进入软件测试论坛讨论

领测软件测试网

   
  在我的登录脚本中,如何知道用户属于哪一个 Active Directory 组?
  
  你好,在登录脚本中实现这一点非常容易:
  
  On Error Resume Next
  Set objADSysInfo = CreateObject("ADSystemInfo")

  strUser = objADSysInfo.UserName
  Set objUser = GetObject("LDAP://" & strUser)
  For Each strGroup in objUser.memberOf
  Set objGroup = GetObject("LDAP://" & strGroup)
  Wscript.Echo objGroup.CN
  Next
  
  那么,这里会发生什么呢?好的,我们首先使用 ADSystemInfo 对象确定登录用户的可分辨名称;这个名称应该类似于:
  
  CN=kenmyer, OU=Managers, DC=fabrikam, DC=com
  
  在取得了可分辨名称之后,可以使用 LDAP 提供者将用户帐户绑定到 Active Directory。Active Directory 用户帐户有一个 memberOf 属性,它是一个数组,包括了用户所属的所有组。由于 memberOf 是一个数组,因此可以使用 For Each 循环来列出所有组。
  
  在获得返回的组名后,我们还要做最后一件事。默认情况下,组按照可分辨名称保存在 memberOf 属性中;因此可以得到如下所示的信息:
  
  CN=Production Leads, OU=Managers, DC=fabrikam, DC=com
  
  可分辨名称非常适于绑定到 Active Directory,但是对于回答“用户属于 Production Leads 组吗?”这样的问题却没有多少帮助。所以,我们还要再进一步,在取得组的可分辨名称后,将组帐户绑定到 Active Directory。这样做之后,便可以取得组的 CN (公用名,common name),并返回类似如下的组名:
  
  Production Leads
  
  这样要容易一点,至少说起来是这样。
  
  在这里要记住两件事情。第一,本脚本只能运行于 Windows 2000、Windows XP 和 Windows 2003;这是因为 Windows NT 4.0 和 Windows 98 不支持 ADSystemInfo 对象。第二,本脚本只能返回用户作为独立成员所属于的组。您问是这话什么意思?好的,假定用户是 A 组的成员,而 A 组碰巧是 B 组的成员。本脚本无法识别出组中的组(组的嵌套);这需要稍微复杂一些的编程才能实现,我们将在以后讨论这个问题。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网