1、Dsadd 用于在特定的目录分区上建立 Active Directory 对象类的实例。这些类包括用户、计算机、联系人、组、组织单位和配额。Dsadd 具有一个由下列内容组成的通用语法:
dsadd <ObjectType> <ObjectDistinguishedName> attributes
请注意,您建立的每一个对象类型都有一组特定的开关,它们与该类型的属性相对应。如下命令建立一个填充了各类属性的用户对象(请注意如下全部内容位于一行):
dsadd user cn=afuller,ou=IT,dc=contoso,dc=com
–samID afuller –fn Andrew –ln Fuller –pwd *
-memberOf cn=IT,ou=Groups,dc=contoso,dc=com "cn=Help Desk,ou=Groups,
dc=contoso,dc=com" –desc "Marketing Director"
–memberOf 开关要求指定应添加该用户的每一个组的完整可分辨名称 (DN);若是要将用户添加到多个组,您能够添加多个 DN 并用空格分隔开。
任何元素若是包含空格(如 Help Desk 组的 DN),则该元素应该括在双引号中。若是某个元素含有反斜杠(如称为 IT\EMEA 的 OU),则必须输入两次反斜杠:IT\\EMEA。(这些要求适用于全部的 ds* 工具。)
若是使用 -pwd * 开关,则系统将提示您在命令行输入用户密码。您能够在该命令中指定密码 (-pwd P@ssword1),可是这样会在屏幕上或该命令嵌入到的任何文本或脚本文件中以纯文本形式显示该密码。
一样,您可使用下列两个命令建立组对象和 OU:
复制代码
dsadd computer cn=WKS1,ou=Workstations,dc=contoso,dc=com
dsadd ou "ou=Training OU,dc=contoso,dc=com"
2、Dsmod
Dsmod 用于修改现有对象,它的使用方法与 dsadd 很是类似,您须要根据要修改的对象的类型使用不一样的子菜单和语法。如下 dsmod 语句会更改用户的密码并修改该用户的账户,所以在下次登陆时系统会提示该用户更改成新的密码:
dsmod user "cn=afuller,ou=IT,dc=contoso,dc=com" –pwd P@ssw0rd1 –mustchpwd yes
要了解这些开关多么类似,您能够查看要用于建立此用户并配置了相同属性的 dsadd 语法:
dsadd user "cn=afuller,ou=IT,dc=contoso,dc=com" –pwd P@ssw0rd1 –mustchpwd yes
您能够清晰地看到,若是知道 dsadd 中用于建立对象的开关,则可使用那些相同的开关修改 dsmod 用户。
3、dsrm
dsrm 与 dsadd 是相逆的;正如您可能想到的,使用此工具可从命令行中删除对象。基本的 dsrm 语法至关简明:只需输入 dsrm 后输入要删除对象的可分辨名称便可,以下所示:
dsrm cn=WKS1,ou=Workstations,dc=contoso,dc=com
默认状况下,dsrm 会提示“确实要删除此对象吗?”,此时键入 Y,而后按 Enter。您可使用 –noprompt 开关禁止显示此提示,但很明显,这样作没法在删除对象以前确认所选对象是否正确。若是要删除容器对象(即,在其内部可能包含其余对象的组织单位),另外两个开关可能会颇有用。如下命令将删除 TrainingOU 组织单位及其内部包含的全部对象:
dsrm ou=TrainingOU,dc=contoso,dc=com –subtree
如下命令将删除包含在 TrainingOU 中的全部子对象,但保留组织单位对象自己:
dsrm ou=TrainingOU,dc=contoso,dc=com –subtree –exclude
4、dsmove
要移动或重命名 Active Directory 中的对象,请使用 dsmove 工具,但请注意您只应使用该工具在单一域中移动对象。要在域和林之间迁移对象,请使用 Active Directory 迁移工具 (ADMT),可从 Microsoft 网站免费下载。Dsmove 依赖于两个开关,它们能够单独使用,也能够结合在一块儿使用。如下命令将为 Steve Conn 的账户指定新姓氏:
dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com" –newname "Steve Conn"
如下命令将 Steve 的账户从 IT OU 移动到 Training OU:
dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com"–newparent ou=Training,dc=contoso,dc=com
如下命令将 Steve 的账户从 IT OU 移动到 Training OU:dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com" –newparent ou=Training,dc=contoso,dc=com
您能够经过同时指定这两个开关,将重命名和移动合并为一个操做,以下所示:
dsmove "cn=Conn, Steve,ou=IT,dc=contoso,dc=com" –newname
"Steve Conn" –newparent ou=Training,dc=contoso,dc=com
5、Dsget 和 Dsquery
ds* 命令行工具集还包括两个用于查询 Active Directory 获取信息而非用于建立或修改对象的工具。
Dsget 将对象的 DN 做为输入并为您提供您指定的一个或多个属性的值。Dsget 使用与 dsadd 和 dsmod 相同的子菜单 — user、computer、contact、group、ou 和 quota。
要得到用户账户的 SAM 账户名和安全标识符 (SID),请键入如下命令(请注意如下全部内容位于一行):
dsget user cn=afuller,ou=IT,dc=contoso,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=contoso,dc=com" "cn=rking,ou=ITTraining,ou=Training,dc=contoso,dc=com" 要查询 IT OU 和任意子 OU 中包含的全部用户对象,请使用如下命令: dsquery user ou=IT,dc=contoso,dc=com 您能够经过添加其余开关进一步细化此查询,如 -disabled(仅返回已禁用的用户账户)、-inactive x(仅返回在过去 x 周或更久未登陆的用户)或 -stalepwd x(仅返回在 x 天内或更久未更改其密码的用户)。 依据目录中对象的数目,在运行查询时您可能须要指定 -limit x 开关。默认状况下,dsquery 将会返回多达 100 个与查询细节相匹配的对象。您能够指定更大的数目(如 -limit 500),或使用 -limit 0 指示 dsquery 返回全部匹配对象。 也可使用其余子菜单执行对其余对象类型的有用查询。考虑如下查询,此查询将返回在 Active Directory 站点和服务中定义的位于 10.1.x.x 地址空间中的每一个子网: dsquery subnet –name 10.1.* 或使用如下命令返回位于 Corp 站点中的每一个子网: dsquery subnet –site Corp 使用另外一个子菜单,您能够很快肯定林中配置为全局编录服务器的域控制器的数量: dsquery server –forest –isgc 您还可使用此语法帮助肯定域中哪一个域控制器承载主域控制器 (PDC) 模拟器灵活单主机操做 (FSMO) 角色: dsquery server –hasfsmo pdc 与其余包含子菜单的 ds* 命令同样,您能够转到命令提示符并键入 dsquery user /?、dsquery computer /?、dsquery subnet /? 等查看特定 dsquery 子菜单中可用的全部开关。 另外一个灵活的技巧是使用管道字符(在美式键盘上按下 shift 的同时按反斜杠便可)将 dsquery 的输出经过管道传送到其余工具(如 dsmod)中。例如,假设您的公司已将 Training 部门重命名为 Internal Development,如今您必须将每位相关用户的说明字段从旧部门名称更改成新名称。在单一命令行上,您能够查询具备 Training 的说明字段的用户对象,而后批量修改该说明字段,以下所示: dsquery user –description "Training" | dsmod -description "Internal Development"