富贵资源网 Design By www.hznty.com
问:
您好,脚本专家!如何确定名为 John Smith 的用户的用户登录名?

-- FR

答:
您好,FR。您知道,我们很愿意告诉您如何确定名为 John Smith 的用户的用户登录名,但是我们不能这样做:因为在我们的某个样例脚本中有一个特定的姓名列表,表示我们只能引用的用户名。遗憾的是,John Smith 不在该列表中,因此我们不能使用他的名字。

是的,对此我们也觉得不舒服,但是我们无能为力。但是要告诉您的是:向您介绍一个确定名为 Ken Myer 的用户的用户登录名的脚本怎么样?是的,我们知道:确实不一样,不是吗?但我们最多只能做到这样了:

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 sAMAccountName FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='user' " & _
        "AND givenName='Ken' AND sn='Myer'"
Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst
Do Until objRecordSet.EOF
    Wscript.Echo objRecordSet.Fields("sAMAccountName").Value
    objRecordSet.MoveNext
Loop

您可能已经发现了,这是一个用于搜索 Active Directory 的脚本。我们不打算逐个解释此脚本中使用的每一行代码,那样会花费太多时间。如果您不熟悉 Active Directory 搜索脚本,建议您看一下我们的两篇“脚本故事”系列文章 Dude:Where's My Printer? 您在此脚本中看到的所有看起来怪怪的东西 - ADsDSOObject、DS_SCOPE_SUBTREE、ADODB.Command - 在这两个专栏中都有详细的解释。

但是,我们将指出与用于进行搜索的查询有关的几件事情。在编写用于搜索 Active Directory 的脚本时,最难的部分也许就是知道要搜索的属性名。例如,您提到的用户登录名。我们知道用户登录名的意思,您也知道用户登录名的意思,但是 Active Directory 不知道用户登录名是什么。Active Directory 会改为调用 sAMAccountName。(注意:尽管字母的大小写无关紧要,但是我们会将此属性名写作 sAMAccountName,仅仅是因为这是该属性的正式名称而已。因而,SQL 查询将检索指定用户的 sAMAccountName。

那么如何指定该用户呢?嗯,我们要查找符合以下三个条件的 Active Directory 对象:

"SELECT sAMAccountName FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='user' " & _
        "AND givenName='Ken' AND sn='Myer'"

剩下的就很容易了。执行此查询,Active Directory 将返回一个记录集,该记录集由 giveName 为 Ken 且 sn 为 Myer 的所有用户组成。然后,设置一个 Do Until 循环来遍历该记录集,并回显每个用户的 sAMAccountName。(理想的情形为,Active Directory 中只有一个 Ken Myer,但是实际上可能会有多个同名同姓的用户。在这种情况下,sAMAccountName 将是一个区别因素,因为 sAMAccountNames 必定是唯一的。)

明白一些了吧?好了,看(不要告诉任何人是我们说的),拿刚才向您介绍的脚本来说,用 John 替换 Ken、用 Smith 替换 Myer,您将得到用于搜索名为 John Smith 的用户的脚本。但是,这只是您和我们之间的秘密,好吗?好
富贵资源网 Design By www.hznty.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
富贵资源网 Design By www.hznty.com

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。