用vbs从本地 Administrators 组中删除组

问:
您好,脚本专家!如何从本地 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 作为唯一参数进行传递。

(0)

相关推荐

  • 用vbs从本地 Administrators 组中删除组

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

  • Android studio 项目手动在本地磁盘中删除module后,残留文件夹无法删除的问题解决方法

    Android studio 项目手动在本地磁盘中删除module后,残留文件夹无法删除问题 如标题所述,本人在本地磁盘删除project中的module后(好吧,是我太菜了),仍然残留着一个文件夹,但是又无法右键之后又无法删除,(强迫症得我觉得很难受),每次打开时候还Android studio还报了一个错误,如下: .Unsupported Modules Detected: Compilation is not supported for following modules: testfo

  • 10个.NET中删除空白字符串的方法

    我们有无数方法可用于删除字符串中的所有空白,但是哪个更快呢? 介绍 如果你问空白是什么,那说起来还真是有些乱.许多人认为空白就是SPACE 字符(UnicodeU+0020,ASCII 32,HTML ),但它实际上还包括使得版式水平和垂直出现空格的所有字符.事实上,这是一整类定义为Unicode字符数据库的字符. 本文所说的空白,不但指的是它的正确定义,同时也包括string.Replace(" ", "")方法. 这里的基准方法,将删除所有头尾和中间的空白.这就

  • Perl中怎样从数组中删除某个值?

    我不确定undef是否和从数组中消除值有确切的关系,猜测一下,如果我们将undef视为"空",那么会有一些联系.但通常来说,将某些东西赋值为undef和删除某些东西是不一样的. 首先来看怎样把数组的元素赋值为undef,之后再了解如何从数组中删除元素. 从下面的代码开始: 复制代码 代码如下: use Data::Dumper qw(Dumper); my @dwarfs = qw(Doc Grumpy Happy Sleepy Sneezy Dopey Bashful); print

  • js从数组中删除指定值(不是指定位置)的元素实现代码

    引用自百度知道里面的一个问答 例如数组{1,2,3,4,5} 要把数组里面的3删除得到{1,2,4,5} js代码: <script type="text/javascript"> Array.p Array.prototype.indexOf = function(val) { //prototype 给数组添加属性 for (var i = 0; i < this.length; i++) { //this是指向数组,this.length指的数组类元素的数量 i

  • 用vbscript实现从文本文件中删除所有重复行的代码

    问: 您好,脚本专家!如何从文本文件中删除所有重复行? -- SW 答: 您好,SW.您知道,成为一名脚本专家便意味着开始永无止境地寻找给定问题的最终解决方案.(或者至少在我们的经理问为什么我们似乎从未真正完成什么时,我们是这么告诉他的:"老板,永无止境的寻找过程需要时间!")这就是为什么我们很高兴看到您的问题的原因.不久前 我们回答了一个关于从文本文件中删除重复名字的类似问题.我们想到的解决方案十分简单而且效果不错:只是我们不确定那是最佳解决方案.现在,很感谢您的问题,我们可以再次尝

  • 详解如何将本地JAR包添加到本地Maven仓库中

    详解如何将本地JAR包添加到本地Maven仓库中 有些时候,当我们需要在自己的maven工程中添加一个确定的jar而发现Maven中央仓库不存在时,但是我们自己手上有这些需要的jar包,那么我们可以自给自足,把这个jar包添加到我们的自己的maven仓库中,这样方便在maven工程中引用. 比如sqljdbc.jar在Maven中央仓库中找不到,但是我们的maven工程中确实需要这样的一个jar包,那么我们首先需要下载对应版本的sqljdbc.jar包到本地,然后按照以下的命令添加到本地仓库.(

  • java集合类arraylist循环中删除特定元素的方法

    在项目开发中,我们可能往往需要动态的删除ArrayList中的一些元素. 一种错误的方式: <pre name="code" class="java">for(int i = 0 , len= list.size();i<len;++i){ if(list.get(i)==XXX){ list.remove(i); } } 上面这种方式会抛出如下异常: Exception in thread "main" java.lang.I

  • python实现从字典中删除元素的方法

    本文实例讲述了python实现从字典中删除元素的方法.分享给大家供大家参考.具体分析如下: python的字典可以通过del方法进行元素删除,下面的代码详细演示了这一过程 # Create an empty dictionary d = {} # Add an item d["name"] = "Fido" assert d.has_key("name") # Delete the item del d["name"] ass

  • JavaScript html5 canvas画布中删除一个块区域的方法

    本文实例讲述了html5 canvas画布中删除一个块区域的方法.分享给大家供大家参考,具体如下: 运行效果截图如下: 附:图中,黑色小方块即为删除掉的块区域 具体代码如下: index.html: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html;charset=UTF-8" /> <title>

随机推荐