如何知道用户属于哪一个Active Directory组
在我的登录脚本中,如何知道用户属于哪一个 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
这样要容易一点,至少说起来是这样。
在这里要记住两件事情。第一,本脚本只能运行于 2000、 XP 和 Windows 2003;这是因为 Windows NT 4.0 和 Windows 98 不支持 ADSystemInfo 对象。第二,本脚本只能返回用户作为**成员所属于的组。您问是这话什么意思?好的,假定用户是 A 组的成员,而 A 组碰巧是 B 组的成员。本脚本无法识别出组中的组(组的嵌套);这需要稍微复杂一些的编程才能实现,我们将在以后讨论这个问题。
郁郁行行 发表于: 2009-09-24
我要回答相关推荐
-
如何使用Active Directory标识和跟踪虚拟机
-
在我的登录脚本中,如何知道用户属于哪一个 Active Directory 组?
-
无法在 VMM 管理服务器的 Active Directory 域服务(AD DS)中注册服务主体名
无法在VMM管理服务器的ActiveDirectory域服务(ADDS)中注册服务主体名称(SPN)。 1)使 […]
-
VMware+Active Directory实现自动化任务管理
VMware公司在近日的博客中表示,为促进公有云和私有云管理的自动化,VMware已推出全新插件,将旗下的vCenter Orchestrator工具与微软的Active Directory(活动目录)相结合。
-
如何标识与追踪虚拟机?
随着很多企业部署越来越多的虚拟化平台,如何区分物理服务器和虚拟服务器也变得越来越难。比较好的标识服务器对象(无论是虚拟环境还是物理环境)的方法是使用每一台计算机对象Active Directory中的Description属性。具体该如何操作呢?