VBScript在目录中查找用户;返回结果(已找到或未找到)

VBScript Locate user in Directory; Return results (Found or Not Found)

本文关键字:结果 返回 查找 用户 VBScript      更新时间:2023-09-26

我想首先为没有包含任何代码而道歉。VBScript完全超出了我的知识范围,我被要求在工作中使用它作为一个小程序。

目标:我被要求搜索活动目录的一部分(我被告知它是我们活动目录中的OU),并将试图登录计算机的用户与OU进行比较。如果那个人确实存在于指定的OU中,我需要做点什么。如果这个人不存在,我需要做其他事情。

具体情况:我在一家医院工作。这样做的目的是防止护士使用为楼层医生指定的笔记本电脑。当护士登录到所述计算机时,如果登录的人存在于"医师"OU(即我的OU)中,则继续登录,否则将该人注销(即在Imprivata中键入F4)。话虽如此,我们使用了一个名为Imprivata的程序,当用户刷徽章时,该程序会将其登录。Imprivata还可以执行按键操作,如输入用户密码、单击按钮等。Imprivatta程序允许在后台用VBScript、WSH和我相信的JavaScript编写代码,然后在存在条件时执行(用户登录计算机)。不幸的是,我对这些语言一无所知。

一个星期以来,我一直在网上搜索,尝试不同的东西,但没有运气。事实上,我甚至已经接近任何工作,所以任何帮助都将不胜感激,我再次为缺乏代码道歉。

最简单的事情是获取当前用户的OU,这可以通过完成

Set objSysInfo = CreateObject("ADSystemInfo")
strUserName = objSysInfo.UserName

现在,您可以检查您的医生OU是否参与其中。当然,这与检查该用户是否在医生组织单位并不完全相同,因为在某些情况下,两个组织单位中可能存在相同的用户名。然而,如果两个OU中的同一用户发生了某种情况,那么无论哪种情况,您都会遇到问题。

在获得用户后,OU只需进行简单的字符串比较。我总是为使用一个小助手功能

Function contains(sourceStr, checkStr)  
    contains=InStr(1, sourceStr, checkStr, vbTextCompare) > 0
End Function

如果一个字符串是另一个字符串的子字符串,那么这只不过是一个不区分大小写的检查。所以

contains(strUserName, "OU=Finance,OU=North America,OU=Pacific Coast,dc=fabrikam,dc=com")

使用OU的DN可能已经足够了。

如果你是vbscript的新手,那么一个很好的起点应该是旧的"嘿,Scripting Guy"博客,在那里一切都有很多详细的解释。例如,这个是关于检查用户的OU。

Windows对此有设置。

允许登录本地

此登录权限决定哪些用户可以交互登录到此计算机。按所附键盘上的CTRL+ALT+DEL顺序启动的登录要求用户具有此登录权限。此外,某些可以登录用户的服务或管理应用程序可能需要此登录权限。如果为用户或组定义此策略,则还必须授予管理员组此权限。

工作站和服务器上的默认值:管理员备份操作员用户。

域控制器上的默认值:帐户操作员管理员备份操作员打印操作员服务器操作员。