一些第三方产品
由于 Active Directory 基于 LDAP 标准,您可以使用任何支持 LDAP 的工具对其进行查询和修改。许多第三方供应商已发布了收费的工具,帮助您管理 Active Directory,但有时您会发现为社区免费提供的极具价值的工具。目录服务 MVP Joe Richards 创建的集合就是这种情况,可以从  joeware.net/freetools 下载。在那里您将会发现大量具有不同功能的工具。我反复使用的有 adfind、admod 和 oldcmp 这三种工具。

Adfind 和 Admod
Adfind 和 admod 类似于 dsquery 和 dsmod;adfind 是 Active Directory 的命令行查询工具,admod 能够创建、删除或修改一个或多个 Active Directory 对象。
与具有多个子菜单并且开关依据对象类型而异的 ds* 工具不同,adfind 和 admod 具有一致的语法,与要尝试执行的查询或修改类型无关。adfind 的基本语法为:
adfind –b <Search Base> -s <Search Scope> -f <Search Filter>
    attributesDesired
所以对域中所有计算机对象的 DN 和说明的查询应为:
adfind –b dc=contoso,dc=com –s subtree –f (objectclass=computer) dn 
    description
对所有用户对象的查询如下所示:
adfind –b dc=contoso,dc=com –s subtree –f "(&(objectcategory=person)
    (objectclass=user))" dn description
注意,除了 LDAP 查询的内容外,语法没有任何更改。
使用 adfind 时,您将发现许多快捷操作符,可以减少许多键入内容。例如,-default 开关可以取代上一示例中的 -b dc=contoso,dc=com 并搜索整个域;-gc 搜索垃圾收集 (GC) 并返回 Active Directory 林中所有的用户。还可以使用 -rb 开关设置相对搜索库;如果要在 phl.east.us.contoso.com 域中搜索 Training OU,您可以通过仅仅指定 –default –rb ou=Training,而非 –b ou=Training, dc=phl,dc=east,dc=us,dc=contoso,dc=com,从而减少许多工作量。
另外,adfind 还可以执行在命令行中不能轻松管理的许多高级搜索功能,如 图 4 所示。

开关说明
-showdel查询 Deleted Objects 容器,查找逻辑删除对象。
-bit查询 user AccountControl 属性之类的位运算符。
-asq执行属性范围查询。此功能(在 dsquery 中不能使用)可以检索特定对象的属性,然后对其执行查询。
-dsq将 adfind 查询的结果通过管道传送到 dsmod 或其他 ds* 工具之一。
  
使用 –asq 开关“显示 HelpDesk 成员的组成员身份”的示例如下所示:
adfind –default –rb cn=HelpDesk,ou=IT –asq member memberOf 
顾名思义,admod 用于修改 Active Directory 中的对象。与 adfind 一样,不需要记住有特殊语法的特定子菜单;admod 在任何时候都使用相同的语法,与要处理的对象类型无关。还可以使用 admod 添加、移动、重命名、删除甚至恢复对象,只需通过添加相应的开关(如 -add、-rm、-move、-undel)即可实现。就像 dsquery 和 dsmod 一样,您也可以使用 | 字符将 adfind 查询的结果通过管道传送到 admod。
请注意,使用 admod 执行恢复操作只能执行逻辑删除恢复操作,在此操作中大部分对象属性已被删除。要完全还原某个对象及其所有属性,您仍需要执行该对象的授权还原。

Oldcmp
还有一个 joeware 工具,我认为它是自动工具包中必不可少的一部分:oldcmp,该工具会扫描 Active Directory 数据库,查找在指定周数内未使用的计算机帐户,而且可以执行以下操作:
  • 创建帐户报表而不对其进行任何操作
  • 禁用未使用的计算机帐户
  • 将计算机帐户移动到另一个指定的 OU 中
  • 完全删除计算机帐户
请注意,由于 oldcmp 可能会严重损坏您的目录,因此它有许多内置的安全功能。它不会删除尚未禁用的任何帐户(无需手动指定“No really, I mean it!”命令行开关)。无需指定类似的“No really, I mean it!”开关,每次修改对象不会超过 10 个,而且绝对不会对域控制器的计算机帐户执行任何操作。
现在,尽管工具的名称易于误导,但是 Joe 已更新了 oldcmp,以便对在特定时间内未使用的用户帐户也能执行相似的功能。
对于一个小型 Active Directory 环境或每次只执行一两个添加或更改操作的环境,GUI 工具(如 Active Directory 用户和计算机)可能足以满足日常管理需要。但是,如果您每天都要添加和修改大量对象,或者只是需要更加简化地管理任务解决方案,则改用命令行可以大大加快在 Active Directory 中创建、修改和删除对象的过程。您已经了解到,有许多灵活且功能强大的工具可以免费获得,它们或者内置于 Windows 中,或者可从 Active Directory 社区成员中下载。这些工具中的任何一个都能够大大提高 Active Directory 管理员的工作效率,与此同时,它们在您的日常工作中变得更加必要。