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

VBScript
用vbs脚本来关闭 HTML 页面的代码
用vbs实现确定是否安装了某个特定的补丁
用vbs确定用户的登录名的代码
用vbs找到映射到共享的所有驱动器并重新映射它们
可以从一台远程服务器运行 SP2 安装程序Install.vbs
用vbs判断一个日期是否在指定的时段内
vbs+hta中实现在单个 onClick 参数中包括多个子例程的代码
vbs中实现启动两个应用程序,一直等到其中一个程序结束,然后关闭另一个?
用vbs实现对文本文件中的项计数
用vbs对文本文件的内容进行排序
用vbscript把 Word 文档保存为文本文件的代码
用vbs返回 Internet Explorer 的下载控件和 Applet 的列表
用vbscript合并多个文本文件的代码
用vbscript防止本地用户更改其密码
用vbs针对一个 IP 地址范围运行脚本
用vbs 实现从剪贴板中抓取一个 URL 然后在浏览器中打开该 Web 站点
使用vbscript脚本在表单中进行选择的代码
一个把任何文件转成批处理的vbs脚本Any2Bat.vbs
windows脚本调试howto的方法
注册表的禁用与解锁方法集合

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 46 ::
收藏到网摘: 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 作为唯一参数进行传递。