用vbs确定用户的登录名的代码
(编辑:jimmy 日期: 2026/1/24 浏览:2)
问:
您好,脚本专家!如何确定名为 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 的用户的脚本。但是,这只是您和我们之间的秘密,好吗?好
几个月来,英特尔、微软、AMD和其它厂商都在共同推动“AI PC”的想法,朝着更多的AI功能迈进。在近日,英特尔在台北举行的开发者活动中,也宣布了关于AI PC加速计划、新的PC开发者计划和独立硬件供应商计划。
在此次发布会上,英特尔还发布了全新的全新的酷睿Ultra Meteor Lake NUC开发套件,以及联合微软等合作伙伴联合定义“AI PC”的定义标准。