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

(0)

相关推荐

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

    问: 您好,脚本专家!如何确定名为 John Smith 的用户的用户登录名? -- FR 答: 您好,FR.您知道,我们很愿意告诉您如何确定名为 John Smith 的用户的用户登录名,但是我们不能这样做:因为在我们的某个样例脚本中有一个特定的姓名列表,表示我们只能引用的用户名.遗憾的是,John Smith 不在该列表中,因此我们不能使用他的名字. 是的,对此我们也觉得不舒服,但是我们无能为力.但是要告诉您的是:向您介绍一个确定名为 Ken Myer 的用户的用户登录名的脚本怎么样?是的,

  • spring cloud oauth2 实现用户认证登录的示例代码

    需求 在微服务架构中,我们有很多业务模块,每个模块都需要有用户认证,权限校验.有时候也会接入来自第三方厂商的应用.要求是只登录一次,即可在各个服务的授权范围内进行操作.看到这个需求,立马就想到了这不就是单点登录吗?于是基于这样的需求,作者使用spring-cloud-oauth2去简单的实现了下用户认证和单点登录. 相关介绍 OAuth2 OAuth2是一个关于授权的网络标准,他定制了设计思路和执行流程.OAuth2一共有四种授权模式:授权码模式(authorization code).简化模式

  • 如何恢复数据库的账号 登录名/用户名等

    当我们重装系统,或者是重装数据库之后,当附加数据库之后,发现数据库里面 有用户名,但是在sqlserver里面没有 登陆名 例如 先看  用户名  是有他上次系统的用户名的 现在我们先去添加这个登录名 点击取消 进入 查询分析器,选择你要修复的数据库 sp_change_users_login 'report'          这个可以查询当前数据库下的孤立用户 我们只需要选择当前数据库为你要修复的数据库,然后运行 sp_change_users_login 'update_one','用户名

  • SQLSERVER记录登录用户的登录时间(自写脚本)

    前一阵子经理问我能不能把用户最后一次登录我们的业务数据库的时间记录下来,因为之前有人修改过数据库sa用户的登录密码,所以我们要记录一下. 我查了一下资料,好像不能记录谁登录过业务库,只能记录谁登录过SQLSERVER 数据库版本是SQL2005 ,操作系统:Windows7 下面是本人写的一个脚本,我的实现原理是使用触发器,触发器是登录触发器,范围是整个服务器范围,如果有人登录过,就使用 bcp命令把登录信息记录日志文件 1.如果原来数据库已经存在触发器把他删掉 复制代码 代码如下: USE M

  • java实现用户自动登录

    自动登录,是为了帮助用户多次使用这个网页时,不用再次输入用户名和密码就可以登录. 自动登录是指用户将用户的登录信息,人,保存到本地的文件中Cookie中. Name,value -声明时 new Cookie(key,value); Path-默认值,即为当前保存cookie的这个serlvet所在的路径. 如果Cookie在这样的路径:http://loclhost:8080/project/abc/AServlet 则Cookie的路径为: http://loclhost/project/a

  • php中使用session防止用户非法登录后台的方法

    本文实例讲述了php中使用session防止用户非法登录后台的方法.分享给大家供大家参考.具体如下: 一般来说,我们登录网站后台时,服务器会把登录信息保存到session文件里,并通过读取session文件来判断是否可以进行后台操作. 以下面为例,假如admin.php是我们的后台操作页面,如果没有启用 session,那么,即便是没有登录,用户照样能访问到该页面,这时候,就需要用到 session 来防止用户非法登录到这个页面了.下面是三个文件的代码 登录页面:login.php 复制代码 代

  • PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】

    本文实例讲述了PHP实现用户异地登录提醒功能的方法.分享给大家供大家参考,具体如下: 对于安全性要求比较高的web网站,特别是后台管理,有时候需要甄别自己的账号是否被盗或者是否有另一个人此刻登陆了在进行后台操作,这些都会很不安全,为了避免两个人同时登录同时操作,可以强制下线一个账号. 通过IP判断当然是不行的,因为IP是随时会在某一个网段内变化的,但是有一个机制,恰巧可以解决这个,那就是session,只要使用同一个浏览器访问网站,浏览器不关闭每个来访者的session_id是不变的,这也正是解

  • PHP实现用户登录的案例代码

    本文讲述了PHP实现用户登录的案例代码.分享给大家供大家参考,具体如下: 需求分析: 在Web应用开发中,经常需要实现用户登录的功能.假设一个名为username的用户,当该用户进入网站首页时,如果还未登录,则页面会提示登录,用户输入登录信息进行验证,验证通过进入用户中心,否则显示用户名或密码错误,重新登录.登录成功后,用户还可以单击"注销",回到登录页面. 程序设计流程图: login.html <!DOCUMENT html PUBLIC "-//W3C//DTD

  • PHP cookie,session的使用与用户自动登录功能实现方法分析

    本文实例讲述了PHP cookie,session的使用与用户自动登录功能实现方法.分享给大家供大家参考,具体如下: cookie的使用 //生成cookie //注释:setcookie() 函数必须位于 <html> 标签之前. //setcookie(name, value, expire, path, domain); //名称,值,过期时间,有效路径,有效域名 //path,可选:如果路径设置为 "/",那么 cookie 将在整个域名内有效.如果路径设置为 &q

  • SQL实现筛选出连续3天登录用户与窗口函数的示例代码

    目录 还原试题 SQL窗口函数 一.窗口函数有什么用 二.什么是窗口函数 三.如何使用 1.专用窗口函数rank 2.其他专业窗口函数 3.聚合函数作为窗口函数 4.注意事项 四.总结 1.窗口函数语法 2.窗口函数有以下功能: 3.注意事项 解题思路 代码实现 其他解法与延展 还原试题 首先新建一张表来还原一下试题: CREATE TABLE last_3_day_test_table ( user_id varchar(300), login_date date ); INSERT INTO

随机推荐