| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
如何获取拥有备选接收方的所有用户的列表?
如何获取拥有备选接收方的所有用户的列表?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-24 11:14:23
问:

您好,脚本专家!如何获取拥有备选接收方 (altRecipient) 的所有用户的列表?

-- SA

答:

您好,SA。您知道,身为脚本专家最大的一个好处就是我们不必知道自己在谈论什么;因此无论您向我们询问什么,只要我们能编写出相应的脚本就皆大欢喜了。例如:检索拥有备选接收方的所有用户的列表。坦白地讲,我们对备选接收方也仅有个模糊的概念,认为它是表示转发 Microsoft Exchange 电子邮件地址的备选位置。我们知道的就这些,并且我们也说过,就这些我们甚至都不敢保证是正确的。但是不要紧;毕竟,只要我们所展示的脚本能够返回拥有备选接收方的所有用户的列表,就不会有人计较我们在这方面的知识匮乏。

On Error Resume Next



Const ADS_SCOPE_SUBTREE = 2



Set objConnection = CreateObject("ADODB.Connection")

Set objCommand =   CreateObject("ADODB.Command")

objConnection.Provider = "ADsDSOObject"

objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection



objCommand.Properties("Page Size") = 1000

objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 



objCommand.CommandText = _

    "SELECT Name, altRecipient FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='user' " & _

        "AND altRecipient='*'" 

Set objRecordSet = objCommand.Execute



objRecordSet.MoveFirst



Do Until objRecordSet.EOF

    Wscript.Echo objRecordSet.Fields("Name").Value, objRecordSet.Fields("altRecipient").Value

    objRecordSet.MoveNext

Loop

和您看到的一样,此脚本仅搜索 Active Directory,查找拥有备选接收方的所有用户。同往常一样,我们不会讨论搜索 Active Directory 的细节;因为那超出了本专栏所涵盖的范围。不过别担心:我们决不会让您对 Active Directory 搜索脚本的工作方式疑惑不解。如果您需要(或想要)有关 Active Directory 搜索脚本潜在原则的详细信息,请查看由两部分组成的脚本的故事系列文章伙计:我的打印机在哪里?

不,谢谢。不管怎么说,是您免去了我们撰写一篇专栏文章的工作,因为如果您确实想知道其中的原委,只要去查一下某个相关的专栏就可以了,根本没有再写类似一篇专栏文章的必要!(编辑附注:这段话暗示您在这个问题上还可以选择。如果您感到奇怪 - 不必这样。也是,如果您连这都感到奇怪,那脚本编辑今天可就有事情做了。)

今天我们所要关注的是返回拥有备选接收方的所有用户的列表的实际查询。正如 SA 所说,备选接收方的 Active Directory 属性名为 altRecipient;要获取拥有备选接收方的用户列表,我们需要对已设置了 altRecipient 属性的所有用户帐户进行搜索。执行该操作的查询如下所示:

objCommand.CommandText = _ "SELECT Name, altRecipient FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='user' " & _ "AND altRecipient='*'"

此处我们所做的就是从 fabrikam.com 域中检索两个属性值 - NamealtRecipient。更为重要的是,我们仅检索以下两个条件均满足的 Active Directory 对象的值:

objectCategory 等于 user。这确保我们只得到拥有备选接收方的用户帐户。其他的对象会拥有备选接收方吗?我们不太确定,因此我们决定还是稳妥为好,从而不会得到用户帐户之外的任何其他东西。

altRecipient 具有值。为此,我们使用通配符语法:altRecipient=’*’。和您猜的一样,搜索 Active Directory 时,星号表示任意字符或字符集。通过使用星号,我们可以要求脚本返回 altRecipient 具有任意值的所有用户帐户;值是什么没关系,只要就行。

您知道,有个问题非常好。如果星号意味着“为我们显示 altRecipient 具有值的所有用户帐户”,难道这不意味着我们会得到所有用户帐户,甚至那些没有备选接收方的用户帐户吗?正如脚本专家以前多次对您讲过的那样,仅仅是因为值为空并不意味着没有值而已。

实话告诉您吧,我们告诉过人们很多事情;您总不能指望我们记得我们说过的每一件事,对吧?但您说对了:如果用户的 altRecipient 属性值为空,则在搜索中将显示该用户。很有可能您的用户之中没有任何一位的 altRecipient 属性为空;不过,没有备选接收方的用户其 altRecipient 值应为 Null(该值恰好为默认值)。与空格或空字符串 ("") 不同,Null 值才确实意味着没有任何值;altRecipient 值为 Null 的用户将不会显示在搜索结果中。

注意:我们也不会对此处您所产生的疑惑置之不理。关于设置 Active Directory 属性值为 Null 的详细信息,请查阅这个备受爱戴的您好,脚本专家!专栏

说得好:所有的您好,脚本专家!专栏都是备受爱戴的,是吗?

执行查询之后,我们得到了包含拥有备选接收方的所有用户的记录集。然后我们需要做的就是编写一个 Do Until 循环来遍历此集合,并回显 Name 和 altRecipient 属性值:

Do Until objRecordSet.EOF

    Wscript.Echo objRecordSet.Fields("Name").Value, objRecordSet.Fields("altRecipient").Value

    objRecordSet.MoveNext

Loop

就这么简单。(设想一下,如果我们真的知道自己在做什么,我们脚本专家为您展示的东西该有多酷!)

【转自世纪安全网 http://www.21safe.com】
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    CSO们如何应对新技术的安
    普通企业如何应对黑客攻
    企业该如何防范由VoIP引
    浅谈IT如何实现企业的应
    黑客与正规企业是如何串
    如何无限制申请Gmail 2.
    企业如何避免人为因素的
    社会工程学:如何利用黑客
    如何在一个文件被添加到
    如何将“珊瑚虫”好友请

    Copyright © 2006-2008 www.anquan365.com 安全365
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览