当前位置: 首页 > 图文教程 > 脚本技术 > VBScript > 用vbs从本地 Administrators 组中删除组

VBScript
NYboy.vbs病毒源代码公布,我来模拟熊猫烧香
vbs脚本病毒生成器 下载
用vbs实现返回 IP 配置数据
mdir.vbs 建立隐藏虚拟目录的vbs
改进后的mkw3site.vbs(创建虚拟目录)
charCodeAt与AscW函数的区别说明
vbs中Empty和Null的区别
用vbs将名称转换为正确的大小写的代码
用vbs实现更改计算机的说明的代码
vbs中使用 ADO 读取所有数据均在一行上的文本文件的代码
用vbs检测Internet Explorer 中是否启用了 ActiveX
在vbs运行命令行工具后让命令窗口保持打开状态的脚本
用vbs读取远程计算机上的文本文件的代码
用vbs从本地 Administrators 组中删除组
用vbs删除前一天创建的备份文件
不错的一篇VBS-JSCRIPT GETOBJECT理解
VBS ArrayList Class vbs中的数组类
如何调试JScript/VBScript的方法
如何通过计划任务调用QuickTest测试脚本
用vbs实现按创建日期的顺序列出一个文件夹中的所有文件

VBScript 中的 用vbs从本地 Administrators 组中删除组


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 45 ::
收藏到网摘: n/a

问:
您好,脚本专家!如何从本地 Administrators 组中删除组?
-- SB
答:
您好,SB。有一位脚本专家还隐约记得早年一部名为 Branded 的电视节目,节目中的主人公(由查克·康纳斯扮演)被指控为懦夫并被不光彩地从美国骑兵队开除。差不多所有脚本专家都记得它的开头部分:骑兵队扯掉该士兵制服上的肩章并将它的剑一折两断,然后令其耻辱地快步走出要塞。
为何要忆起这一幕?没有什么真正的原因,我们只是认为如果每当将用户或组从本地 Administrators 组中删除时都举行类似的仪式会很酷。不过,在这种理想实现之前,可以使用与以下类似的脚本将组(此例中为 Active Directory 组)从本地 Administrators 组中删除:
复制代码 代码如下:

strComputer = "atl-fs-01"
Set objAdmins = GetObject("WinNT://" & strComputer & "/Administrators")
Set objGroup = GetObject("WinNT://fabrikam/finance")
objAdmins.Remove(objGroup.ADsPath)

是的,这非常简单,不是吗?此脚本首先会将计算机的名称(在本例中为 atl-fs-01)赋值给名为 strComputer 的变量。然后,我们就可以使用下面这行代码绑定到该计算机上的本地 Administrators 组:
Set objAdmins = GetObject("WinNT://" & strComputer & "/Administrators")
获得对 Administrators 组的对象引用后,我们的下一个任务便是创建另一个对象引用,它是对将删除的组的引用。下面这行代码就用来完成该任务:
Set objGroup = GetObject("WinNT://fabrikam/finance")
请注意,引用组帐户时我们使用老式的 Windows NT 式命名约定:fabrikam/finance。为什么会是这样?很简单:为对本地用户和组进行操作,我们不得不使用 WinNT 提供程序。WinNT 提供程序不明白 Active Directory 术语,对于与以下类似的对象路径摸不着头脑:
cn=Finance Users, ou=Finance, dc=fabrikam, dc=com
因此,我们不得不退一步采用老式的帐户名:域名/登录名。但是没关系:所幸 Active Directory 也明白此命名约定。当我们请求帐户 fabrikam/finance 时,Active Directory 对我们的言语知道得一清二楚。
注意:此问题以前提出过,但值得再次提出:是的,您可以使用 WinNT 提供程序访问 Active Directory 中的对象。而且,对象路径要简单得多,这没错。但请不要冒险行事:请仅在绝对必要的情况下使用 WinNT 提供程序。为什么这么说呢?好吧,举一个例子,就用户帐户而言,通常在与 Active Directory 协作时使用的 LDAP 提供程序支持超过 200 个属性;而 WinNT 提供程序仅支持约 20 个属性。LDAP 提供程序要强大得多、有用得多。
获得对组的对象引用后,我们所要做的全部工作便是调用 Remove 方法,将该组从本地 Administrators 组中删除:
objAdmins.Remove(objGroup.ADsPath)
我们仍然认为撕掉该人衬衣上的口袋保护袋,然后用膝盖折断他的订书机会更酷,但这已经可以达到目的。
当然,您要删除的组可能不是 Active Directory 组,而可能是本地组。这会成为问题吗?不会;实际上还要简单一点儿。只需直接绑定到本地机上的组帐户,然后将它删除:
strComputer = "atl-fs-01"
Set objAdmins = GetObject("WinNT://" & strComputer & "/Administrators")
Set objGroup = GetObject("WinNT://finance")
objAdmins.Remove(objGroup.ADsPath)
顺便说一句,从一个组中删除另一个组的过程与从一个组中删除用户的过程完全相同:绑定到目标组(此例中为本地 Administrators 组),绑定到要删除的对象(无论是组还是用户,都没有关系),然后调用 Remove 方法,将要删除帐户的 ADsPath 作为唯一参数进行传递。