bsp; 您可以清晰地看到,如果知道 dsadd 中用于创建对象的开关,则可以使用那些相同的开关修改 dsmod 用户。
dsrm
dsrm 与 dsadd 是相逆的;正如您可能想到的,使用此工具可从命令行中删除对象。基本的 dsrm 语法相当简明:只需输入 dsrm 后输入要删除对象的可分辨名称即可,如下所示:
dsrm cn=WKS1,ou=Workstations,dc=test,dc=com
默认情况下,dsrm 会提示“确实要删除此对象吗?”,此时键入 Y,然后按 Enter。您可以使用 –noprompt 开关禁止显示此提示,但很明显,这样做无法在删除对象之前确认所选对象是否正确。如果要删除容器对象(即,在其内部可能包含其他对象的组织单位),另外两个开关可能会很有用。以下命令将删除 TrainingOU 组织单位及其内部包含的所有对象:
dsrm ou=TrainingOU,dc=test,dc=com –subtree
以下命令将删除包含在 TrainingOU 中的所有子对象,但保留组织单位对象本身:
dsrm ou=TrainingOU,dc=test,dc=com –subtree
–exclude
dsmove
要移动或重命名 Active Directory 中的对象,请使用 dsmove 工具,但请注意只应使用该工具在单一域中移动对象。要在域和林之间迁移对象,请使用 Active Directory 迁移工具 (ADMT),可从 Microsoft 网站免费下载。Dsmove 依赖于两个开关,它们可以单独使用,也可以结合在一起使用。以下命令将为 Steve Conn 的帐户指定新姓氏:
dsmove "cn=Conn, Steve,ou=IT,dc=test,dc=com"
–newname "Steve Conn"
以下命令将 Steve 的帐户从 IT OU 移动到 Training OU:
dsmove "cn=Conn, Steve,ou=IT,dc=test,dc=com" –newparent
ou=Training,dc=test,dc=com
可以通过同时指定这两个开关,将重命名和移动合并为一个操作,如下所示:
dsmove "cn=Conn, Steve,ou=IT,dc=test,dc=com" –newname
ds* 命令行工具集还包括两个用于查询 Active Directory 获取信息而非用于创建或修改对象的工具。
Dsget 将对象的 DN 作为输入并为您提供您指定的一个或多个属性的值。Dsget 使用与 dsadd 和 dsmod 相同的子菜单 — user、computer、contact、group、ou 和 quota。
要获得用户帐户的 SAM 帐户名和安全标识符 (SID),请键入以下命令(请注意以下所有内容位于一行):
dsget user cn=afuller,ou=IT,dc=test,dc=com
–samAccountName –sid
Dsquery 将返回一个符合您指定条件的 Active Directory 对象的列表。无论您使用的是哪个子菜单,都可以指定以下参数:
dsquery <ObjectType> <StartNode> -s <Search Scope> -o <OutputFormat>
对于 ObjectType,dsquery 可以使用以下子菜单,每个子菜单都具有自己的语法:computer、contact、subnet、group、ou、site、server(请注意,服务器子菜单检索有关域控制器的信息,而不是环境中的任一成员服务器)、user、quota 和 partition。如果其中一个查询类型不符合需要,您可以使用 * 子菜单,这样您可以输入任意格式的 LDAP 查询。
StartNode 指定搜索在 Active Directory 树中的开始位置。您可以使用特定的 DN,如 ou=IT、dc=contoso、dc=com 或下列其中一个快捷说明符:domainroot,从特定域的根目录开始;forestroot,从使用全局编录服务器执行搜索的林根域的根目录开始。
最后,“搜索范围”选项指定 dsquery 搜索 Active Directory 树的方式。Subtree(默认方式)查询指定的 StartNode 及其所有子对象;onelevel 仅查询 StartNode 的直接子项;base 仅查询 StartNode 对象。
为了更好地理解搜索范围,假定有一个 OU,其中包含用户对象和一个子 OU,该子 OU 自身又包含其他对象。使用 subtree 范围将查询该 OU、包含在该 OU 内的所有用户对象和子 OU 及其内容。onelevel 范围仅查询包含在 OU 中的用户而不查询子 OU 及其内容。base 查询仅搜索 OU 本身而不查询其中包含的任何对象。
最后,您可以使用 Output Format 控制如何设置 dsquery 的结果的格式。默认情况下,dsquery 将返回与查询相匹配的所有对象的可分辨名称,如下所示:
"cn=afuller,ou=Training,dc=test,dc=com"
"cn=rking,ou=ITTraining,ou=Training,dc=test,dc=com"
要查询 IT OU 和任意子 OU 中包含的所有用户对象,请使用以下命令:
dsquery user ou=IT,dc=test,dc=com
一些第三方产品
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=test,dc=com –s subtree –f (objectclass=computer) dn
description
对所有用户对象的查询如下所示:
adfind –b dc=test,dc=com –s subtree –f "(&(objectcategory=person)
(objectclass=user))" dn description
注意,除了 LDAP 查询的内容外,语法没有任何更改。
使用 adfind 时,您将发现许多快捷操作符,可以减少许多键入内容。例如,-default 开关可以取代上一示例中的 -b dc=test,dc=com 并搜索整个域;-gc 搜索垃圾收集 (GC) 并返回 Active Directory 林中所有的用户。还可以使用 -rb 开关设置相对搜索库;如果要在 phl.east.us.test.com 域中搜索 Training OU,您可以通过仅仅指定 –default –rb ou=Training,而非 –b ou=Training, dc=phl,dc=east,dc=us,dc=test,dc=com,从而减少许多工作量。
Oldcmp
还有一个工具,我认为它是自动工具包中必不可少的一部分:oldcmp,该工具会扫描 Active Directory 数据库,查找在指定周数内未使用的计算机帐户,而且可以执行以下操作:
创建帐户报表而不对其进行任何操作
禁用未使用的计算机帐户
将计算机帐户移动到另一个指定的 OU 中
完全删除计算机帐户
本文来源:不详 作者:佚名