注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

红烧鱼

linux & windows management

 
 
 

日志

 
 
关于我
mac

专注IT基础架构设计与运维。 欢迎给我留言,或邮件沟通zjwsk@163.com

网易考拉推荐

管理 Active Directory 的 11 个常用工具  

2012-03-24 23:23:34|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

http://windows.chinaitlab.com/domain/777191_4.html

Windows Server 2003 中的内置命令行工具,这些工具可以让我们在 Active Directory 中创建、删除、修改和查找对象:

1. CSVDE

    逗号分隔值数据交换工具(即 CSVDE)使用 CSV 源文件将新对象导入到 Active Directory 中;此外,该工具还提供了将现有对象导出到 CSV 文件的功能。CSVDE 不能用于

修改现有对象;在导入模式下使用此工具时,您只能创建全新的对象。

    使用 CSVDE 导出现有对象的列表相当简单。将 Active Directory 对象导出到名为 ad.csv 的文件,方法如下:
    csvde –f ad.csv

    –f 开关表示后面为输出文件的名称。但是必须注意,根据环境的不同,此基本语法可能会生成不实用的大型输出文件。要将此工具限制为仅导出特定组织单位 (OU) 中的对

象,可以将语句修改为如下形式:
    csvde –f UsersOU.csv –d ou=Users,dc=test,dc=com

    进一步假定我们只对将用户对象导出到 CSV 文件感兴趣。如果是那样的话,我们可以添加 –r 开关和 –l 开关,前者允许指定轻型目录访问协议 (LDAP) 筛选器进行搜索,

后者可以限制导出的属性的数量(请注意以下所有内容位于一行):
    csvde –f UsersOnly.csv –d ou=Users,dc=contoso,dc=com –r
           "(&(objectcategory=person)(objectclass=user))" –l
           DN,objectClass,description

    通过 –i 开关,我们可以将对象从源 CSV 文件导入到 Active Directory。但是,使用 CSVDE 创建用户对象存在一个关键限制:不能使用 CSVDE 设置用户密码。因此,应该

避免使用 CSVDE 创建用户对象。


2. LDIFDE

    Active Directory 还提供了另外一个用于执行批量用户操作的内置工具,称为 LDIFDE,与 CSVDE 相比,此工具更强大,更灵活。除了可以创建新对象外,LDIFDE 还可以修

改和删除现有对象,甚至扩展 Active Directory 架构。LDIFDE 虽然具有灵活性,但为了实现这种灵活性却必须要使用扩展名为 .ldf 的 LDIF 文件作为输出文件,这种文件与简

单的 CSV 文件相比,格式更复杂。(只需少量操作就可以配置好用户密码,我稍后将对此进行介绍。)

    我们从一个简单的示例开始,将某个 OU 中的用户导出到 LDF 文件中(请注意以下所有内容位于一行):
    ldifde -f users.ldf -s DC1.contoso.com -d "ou=UsersOU,dc=contoso,dc=com"
           –r "(&(objectcategory=person)(objectclass=user))"

    与大多数命令行工具一样,我们可以通过运行 LDIFDE /? 命令找到 LDIFDE 开关的完整说明。

     LDIFDE 开关
     -d指定 LDIFDE 为了执行操作应连接到的 LDAP 路径。
     -f 指明要使用的文件的名称,在本例中用于输出导出结果。
     -r 指定要用于导出操作的 LDAP 筛选器。

     -s 指定要连接到的执行操作的域控制器 (DC);如果遗漏了此项,LDIFDE 将连接到本地 DC 上(如果您正在从工作站中运行此工具,则连接到验证您身份的 DC)。

    LDIFDE 的真正功能在于创建和操作对象。然而,进行此操作之前,我们首先需要创建一个输入文件。以下语句创建两个名为afuller 和 rking 的用户帐户;要创建该输入文

件,请在记事本(或者您喜欢的纯文本编辑器)中输入以下文本,然后将其保存为 NewUsers.ldf:

    dn: CN=afuller, OU=UsersOU, DC=test, DC=com
    changetype: add
    cn: afuller
    objectClass: user
    samAccountName: afuller

    dn: CN=rking, OU=UsersOU, DC=test, DC=com
    changetype: add
    cn: rking
    objectClass: user
    samAccountName: rking

    创建完该文件后,请运行以下命令:
    ldifde –i –f NewUsers.ldf –s DC1.test.com


3. dsadd

    Dsadd 用于在特定的目录分区上创建 Active Directory 对象类的实例。这些类包括用户、计算机、联系人、组、组织单位和配额。Dsadd 具备一个由下列内容组成的通用语

法:
    dsadd <ObjectType> <ObjectDistinguishedName> attributes

    请注意,创建的每个对象类型都有一组特定的开关,它们与该类型的属性相对应。以下命令创建一个填充了各种属性的用户对象(请注意以下所有内容位于一行):

    dsadd user cn=afuller,ou=IT,dc=test,dc=com
    –samID afuller –fn Andrew –ln Fuller –pwd *
    -memberOf cn=IT,ou=Groups,dc=test,dc=com "cn=Help Desk,ou=Groups,
    dc=test,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=test,dc=com
            dsadd ou "ou=Training OU,dc=test,dc=com"


4. Dsmod

    Dsmod 用于修改现有对象,它的使用方法与 dsadd 非常相似,您需要根据要修改的对象的类型使用不同的子菜单和语法。以下 dsmod 语句会更改用户的密码并修改该用户的

帐户,因此在下次登录时系统会提示该用户更改为新的密码:
    dsmod user "cn=afuller,ou=IT,dc=test,dc=com" –pwd P@ssw0rd1 -mustchpwd yes

    要了解这些开关多么相似,您可以查看要用于创建此用户并配置了相同属性的 dsadd 语法:
    dsadd user "cn=afuller,ou=IT,dc=test,dc=com" –pwd P@ssw0rd1 -mustchpwd yes

    您可以清晰地看到,如果知道 dsadd 中用于创建对象的开关,则可以使用那些相同的开关修改 dsmod 用户。


5. 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


6. 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 "Steve Conn" -newparent ou=Training,dc=test,dc=com


7. 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=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




    一些第三方产品

8. 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,从而减少许多工作量。

9. Oldcmp

    还有一个工具,我认为它是自动工具包中必不可少的一部分:oldcmp,该工具会扫描 Active Directory 数据库,查找在指定周数内未使用的计算机帐户,而且可以执行以下

操作:

    创建帐户报表而不对其进行任何操作
    禁用未使用的计算机帐户
    将计算机帐户移动到另一个指定的 OU 中
    完全删除计算机帐户
  评论这张
 
阅读(828)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017