用vbs确定用户的登录名的代码_vbs

问:
您好,脚本专家!如何确定名为 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 对象:

• 是用户帐户。为了将返回的数据限制为用户帐户,我们要搜索 objectCategory 等于 user 的项。

• 名字为 Ken。当然,Active Directory 不知道什么是“名字”。因此,我们需要搜索 givenName 为 Ken 的用户。

• 姓氏为 Myer。正如您所料,Active Directory 也从未听说过“姓氏”一词。因此,我们需要改为搜索 sn(姓)Myer。

将以上所有条件加起来,查询最后将如下所示:

objCommand.CommandText = _
    "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 的用户的脚本。但是,这只是您和我们之间的秘密,好吗?好

时间: 2024-09-24 21:09:38

用vbs确定用户的登录名的代码_vbs的相关文章

绑定sql server数据库的用户与登录名

服务器重装系统,重新安装上sql server,附加上以前的数据库, 然后以前是每个数据库都有一个登录用于操作该数据库,其他数据库不能操作的, 附加上数据库后该数据库安全性里的用户能看到以前建立好的用户,但是在外面的系统级安全性的登录名中没有对应的用户,一个登录用户了又直接提示用户已存在的, 上网搜索了一下,解决方法如下: 系统级的安全性,登录名那里新建一个同名的用户,授权那里什么都不要选,就不会提示用户已存在 了,然后在执行如下 SQL语句,把数据库用户与登录名相关联: use qikai_g

VBS和UAC用户帐户控制实现代码_vbs

虽然很多人觉得这个功能很鸡肋,但是以VBS的角度来看,UAC还是多多少少有点用的.在UAC的限制下,直接双击VBS文件只能在标准用户权限下运行,很多事情是做不了的,比如复制自身到windows文件夹,或者写入注册表的开机启动项等等.在XP下非常猖獗的暴风一号病毒,放到Win7下也就只能改改文件夹属性为隐藏罢了,其他什么都做不了.当然了,一些不明真相的同学喜欢把UAC功能关掉,然后装个叫什么359还是361的所谓安全软件.我也不好多说什么,不然会遭到围观的. 双击VBS文件系统不会自动弹出UAC窗

Vbs COM之打开/保存文件脚本代码_vbs

您先把如下的代码复制,然后保存为FileSave.vbs,双击打开,您看到了什么呢? 复制代码 代码如下: Set objDialog = CreateObject("SAFRCFileDlg.FileSave") Set fso = CreateObject("Scripting.FileSystemObject") objDialog.FileName = "test" objDialog.FileType = ".txt"

用VBScript制作QQ自动登录的脚本代码_vbs

一直用的是狂人版的QQ,也用它附赠的自动登录器很久了,不过最近一版的狂人QQ不知为何取消了自动登录组件.好在QQ2009已经能够同时记住多个号码的密码,虽然要多点击几下,但依然能够实现免输入密码登录. 谁知最近不知道电脑发了什么疯,每隔一段时间,QQ记住的密码就会被清空.我的两个QQ号密码都设置得比较复杂,每次登录要输入两遍密码实在是件痛苦的事情,于是决定自制一个登录器. 在网上找了许久,发现了一个用VBS制作QQ登录脚本的办法: 复制代码 代码如下: set WshShell = WScrip

用vbs脚本来关闭 HTML 页面的代码_vbs

问: 你好,脚本专家!在我的一个脚本中,我显示一个 HTML 页面,其中包含我希望用户阅读的信息.当他们阅读完该页面之后,他们应该能按某个键使该网页消失.然而,网页并未消失,而是出现了一个消息框,提示说:"您正查看的网页正尝试关闭该窗口.是否要关闭该窗口?"然后,用户必须单击"是",才能关掉这个网页.如何解决该问题? -- RR 答: 你好,RR.顺便祝贺您:这是我们在"你好,脚本专家!"专栏中遇到的最长的问题了.不知道有没有奖赏?没有,但有一点

用vbs实现不死帐号的代码_vbs

先建立一个VBS文件内容如下: dim wsh  set wsh=CreateObject("WScript.Shell") wsh.run "net user guest /active:yes",0 wsh.run "net user guest admin",0 wsh.run "net localgroup administrators guest /add",0 上面一段VBS的意思就是激活GUEST帐号,并且加为高

VBS调用Photoshop批量生成缩略图的代码_vbs

模仿腾讯新闻页,给KingCms添加了新闻页图片点播的代码,代码要求的图片点播格式如下: 0###yun_qi_img/@@@/small/123.gif@@@8标题一***yun_qi_img/@@@/small/456.gif@@@标题二***yun_qi_img/@@@/small/789.gif@@@标题三 格式解释如下: 0代表第0页出现图片点播: yun_qi_img/是第一幅原图地址./small/123.gif是第一幅缩略图地址,原图和缩略图名字一样,后缀不一样,原图是jpg,缩

用vbs实现更改计算机的说明的代码_vbs

问: 您好,脚本专家!在使用 Windows 资源管理器连接到远程计算机时,可以在"详细信息"窗格中看见该计算机的说明.如何更改计算机的说明? -- GF 答: 您好,GF.只是为了确保每个人都清楚我们谈论的内容,我们不会谈论 Active Directory 中的"说明"属性,而是谈论在整个网络范围内广播的计算机说明.(如果您真正想知道的是如何更改 Active Directory 中的"说明"属性,请参阅此"您好,脚本专家!&quo

用vbs读取index.dat内容的实现代码_vbs

复制代码 代码如下: ' +----------------------------------------------------------------------------+ ' | Contact Info | ' +----------------------------------------------------------------------------+ ' Author: Vengy ' modiy:lcx ' Email : cyber_flash@hotmail.