QuQu Blog Welcome to You

   
   
 
AD,Exchange属性批量更改的利器lLog Parser 2.2
By  ququ 发表于 2007-5-5 14:22:44 

本文转自5DMAIL的BBS

Log parser 2.2是微软一款免费的命令行方式日志分析工具。他可用对各种日志文件使用SQL语句进行查询,同时按照指定格式输出。那怎么会和属性批量更改有关呢?各位耐心往下看。

目前,对AD的LDAP进行批量操作的命令有两个CSVDE和LDIFDE两个命令。这两个命令用法基本差不多,实际使用下来各有优缺点。

CSVDE
优点:输出是CSV格式的文件,可以很方便地在excel 或access 中进行替换,编辑。
缺点:CSVDE对AD的import功能很弱,只能通过该命令添加新用户,不能批量修改,删除。

LDIFDE
优点:输入输出的功能很强,可以完成所有对AD属性的操作。
缺点:输出生成LDF文件,该文件是非结构化的格式,只能在字符处理软件里面进行一些简单的查找,替换。

如果有一种软件可以把CSV文件转换成LDF文件,那我们就可以随心所欲地批量更改AD和Exchange的属性。这个工具就是log parser 2.2 。

假定你已经用CSVDE导出了CSV文件,并做了修改如下,文件名import.csv:
dn,displayname
"CN=Zhang Shan,OU=External Users,DC=company,DC=com","Zhang, Shan(CN)"
"CN=li si,OU=External Users,DC=company,DC=com","Li, Si(CN)"

现在你想将这些更改写回AD。

首先,用notepad写一个tpl模板文件。例如:template.tpl
<LPBODY>
dn: %FIELD_3%
changetype: modify
replace: displayname
displayname: %FIELD_4%
-
</LPBODY>

(注意,最后两行的减号和空行是必须的,这是分割标志。%FIELD_3%代表CSV文件第一列,以此类推,我也不知道为什么是从3开始的。)

LogParser "SELECT * INTO out.ldf FROM import.csv" -o:TPL -tpl:template.tpl

(该命令缺省情况下会忽略CSV文件第一行,认为是csv的header)
该命令会生成out.ldf文件,内容如下:

dn: CN=Zhang Shan,OU=External Users,DC=company,DC=com
changetype: modify
replace: displayname
displayname: Zhang, Shan(CN)
-

dn: CN=li si,OU=External Users,DC=company,DC=com
changetype: modify
replace: displayname
displayname: Li, Si(CN)
-


这就是我们需要的ldf文件。

最后,运行如下命令:

ldifde -i -f out.ldf -k -j c:\



最关键一点,所有ldf属性必须包含有效值,否则ldifde会报错。通常一次修改多个属性,可能会出现这个问题。如果ldf文件中包含如下记录,ldifde导入会出错。在处理CSV文件的时候就要考虑这点。

dn: CN=li si,OU=External Users,DC=company,DC=com
changetype: modify
replace: displayname
displayname:
-

log parser 2.2 下载地址

http://www.microsoft.com/downloads/info.aspx?na=90&p=&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=890cd06b-abf8-4c25-91b2-f8d975cf8c07&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2ff%2ff%2f1%2fff1819f9-f702-48a5-bbc7-c9656bc74de8%2fLogParser.msi
 
=======================================================================================================================
附:另一更改工具ADModify.Net

功能概述

ADModify 使用 Microsoft Visual C#.NET 2003 编写。其 2.0 版本经过改进,执行相同修改时所花费的时间仅仅是先前版本所需时间的一半。其功能集允许管理员批量修改任何 Active Directory 分区中的任何 Active Directory 目录服务属性,具有近乎无限的灵活性。管理员不再受限于硬编码到该工具中的属性,因为 ADModify 可通过属性名和属性值修改任何属性。ADModify 也不再受限于编写在程序中的文本值。现在,它可以根据当前的 Active Directory 属性动态生成值。

所有日志均使用 XML 格式进行记录,因此管理员可轻松地操纵和存储数据,甚至可以使用 Undo(撤销)这样的功能。为遵守 Microsoft Windows Server 2003 发出的倡议,即能够在 GUI 中完成的任何工作也应该能够通过命令行来完成,该工具还提供了一个具有完全相同功能的命令行版本。

ADModify 需要 .NET Framework。它不能跨网络驱动器运行。

若要获得 ADModify 工具,请联系微软产品支持服务。有关如何联系微软产品支持服务的更多信息,请参见微软支持和帮助网站

您还可以通过 GotDotNet 网站获得 ADModify 工具。有关获得该工具的更多信息,请参见ADModify.NET:Workspace 主页

  注意:

您还可通过本主题中提供的第三方网站信息,查找所需的计数信息。网站的 URL 可能随时发生更改,恕不另行通知。

Terminal Server 属性

现在,可以使用 ADModify 修改 Windows Server 2003 Terminal Server 属性。可在 Windows Server 2003 的“Active Directory 用户和计算机”的“用户”属性页面中设置所有 Terminal Server 属性。ADModify 使用 TSUserExLib 库,所以如果要修改 Terminal Server 设置,Windows Server 2003 是必需的。虽然不必运行 Windows Server 2003 域,但您需要在运行 Windows Server 2003 的服务器上运行该程序,以便实现这个特定的功能。

邮箱权限

邮箱权限现在也可以进行批量修改。在处理邮箱权限时,有四个选项可供选择:

  注意:

由于使用了 CDOEXM,必需在运行 ADModify 的计算机上安装 Exchange Server 2003 或 Exchange 2000 Server Exchange System Manager。

转储邮箱权限 - 此选项将用户邮箱权限中的所有访问控制列表项 (ACE) 导出到一个 .xml 文件,并按继承权限和非继承权限进行分隔。管理员可使用该文件跟踪邮箱权限,也可使用它导入权限。使用此选项时不支持 Undo(撤销),因为它是一个只读操作。

导入邮箱权限 - 只要成功导出了邮箱权限,便可以使用“导入有效权限”导入它们。需要的所有东西仅是一个有效的 Mbxrights.xml 文件。使用此选项时不支持 Undo。

向邮箱权限批量添加用户 - 利用此选项,可以将具有特定权限的用户同时添加到多个邮箱。例如,可以向用户 DOM\user1 授予对特定用户子集的“完全邮箱访问”。使用此选项时支持 Undo。

从邮箱权限中批量删除用户 - 与“向邮箱权限批量添加用户”类似,但是此选项会从邮箱权限中删除指定的用户。使用此选项时支持 Undo。

命名属性

也许 ADModify 的最强大功能是其命名要修改的属性的能力。包含字符串、布尔(真/假)值或整数值的任何属性都可以被修改。不支持包含诸如安全标识符(SID)和长整型数据的属性。

请观察如下的屏幕截图。

在屏幕截图的相应字段中,填写属性名和值。对于涉及多个值的操作,请确信选择了多值附加多值删除。需要这么做的原因是:如果您修改了具有多值的属性并且没有选择多值附加多值删除选项,那么将使用新值覆盖该属性,而不会将新值附加到该属性。

使用变量

批量修改用户时,管理员不再受限于使用编写在程序中的文本值。ADModify 支持使用变量。变量允许您根据一个或多个当前属性来为属性生成值。如果以单引号 (') 将值包括起来,则会将其视为一个变量。如果您希望同时使用变量和文本值构建一个属性,请记住:需要使用百分号 (%) 将变量和文本值分隔开。您还可以取属性中的前 x 个字符并使用它。

变量示例:

使用 Description 属性作为您的值的语法:'description'

使用两个属性的语法,givenNamesn(使用空格分隔):%'givenName'% %'sn'%

使用多个属性和文本值的语法:h:\homefolders\%'sAMAccountName'%\%'givenName'%\

取属性第一个字符的语法:%1'givenName'%.%'sn'%@microsoft.com

如果您需要在属性值中使用真正的百分号 (%) 或单引号 (') 字符,可使用正斜杠作为转义字符。可以混合使用变量和文本值,并包括 % 和 ' 字符,只要使用的语法正确即可。

以下提供了一些示例:

若要赋“This is a percent sign:%”这个值,可使用:This is a percent sign:/%

若要赋“My username is 'username' ”这个值(这里的用户名为 sAMAccountName),可使用:My username is /'%'sAMAccountName'%/'

Undo 特性

管理员不再需要担心对 Active Directory 用户执行大批量更新这个问题了。除了删除 Exchange 属性导入邮箱权限选项,所有的修改都是可撤销的。所有修改都被写入到一个以当前日期和时间命名(格式为 MMDDYYYYHHMMSS.xml)的日志文件中。所有修改都记录了新值和用户的先前值。只要日志文件保持完整,ADModify 就可分析它并撤销先前所做的更改。除了在 .xml 文件中记录更改之外,还有一个 Undo.log 文件。该文件包含 Undo 特性处理的所有用户,记录了跳过的用户以及跳过该用户的原因,并对所做更改进行了汇总。

命令行语法为:admodcmd -undo filename.xml

ADModify 的命令行用法

admodcmd.exe 工具是 ADModify 的一个全功能命令行版本。可以使用 admodcmd -? 查看命令行语法。常见管理任务的用法示例如下:

添加 firstinitial.lastname@example.com 的备用简单邮件传输协议 (SMTP) 地址:

admodcmd -dn OU=MyOU,DC=domain,DC=com -addsmtp %1'givenName'%.%'sn'%@example.com

命名您想要修改的属性,并修改描述字段以包含“My legacyExchangeDN is (legacyExchangeDN)”这个值,这里的 (legacyExchangeDN) 是用户的 legacyExchangeDN

admodcmd -dn OU=MyOU,DC=domain,DC=com -custom description "My legacyExchangeDN is %'legacyExchangeDN'%"

修改显示名以读取姓和名:

admodcmd -dn OU=MyOU,DC=domain,DC=com -custom displayName "%'sn'%, %'givenName'%"

将用户的相对可辨识名称从“名,姓”修改为“姓,名”:

admodcmd -dn OU=MyOU,DC=domain,DC=com -modrdn "%'sn'%, %'givenName'%"

有关 admodcmd 的更多用法示例,请参阅 ADModify 帮助文件。

针对 Exchange 管理员的技巧和提示

以下是一些 Exchange 管理员可能需要执行的常见任务。

设置扩展属性

扩展属性选项卡在 ADModify 已被删除。现在,若要修改 extensionAttribute1 ~ 15,可以在自定义选项卡中进行。

修改 extensionAttribute1 ~ 15

1.

运行 ADModify,然后单击修改属性

2.

域列表框中,选择域。

3.

域控制器列表框中,选择域控制器。

4.

转到用户容器并展开它,通过选择用户对象来选择要修改的用户,然后单击添加到列表

5.

在右侧面板中,选择用户对象并单击下一步

6.

自定义选项卡中,选择执行自定义修改框。

7.

属性名框中,输入extensionAttributex,这里的 x 是要修改扩展属性的编号。

8.

属性值框中,输入扩展属性的新值。

9.

单击修改

在整个 Exchange 组织结构中设置“允许继承的权限传播给此对象”

由于 ADModify 可浏览并修改配置容器,因此您可对 Exchange 组织结构的层次结构进行批量修改。对于 Exchange 管理员而言,一个有用的功能便是该工具确保 Exchange 层次结构中的所有项都正确设置了继承位这一能力。

批量修改层次结构中所有 Exchange 对象上的继承位

1.

运行 ADModify,然后单击修改属性

2.

域列表中,选择配置分区。

3.

域控制器列表框中输入一个域控制器名称,并单击修改

4.

单击自定义 LDAP 查询。输入筛选条件 (objectClass=*) 并单击确定

5.

选择遍历子容器框。

6.

配置转移到服务,并选择Microsoft Exchange

7.

单击添加到列表

8.

选择右侧窗格中的所有对象并单击下一步

9.

单击帐户选项卡,然后选择允许继承权限设置旁边的两个复选框。

在删除 Exchange 属性之前保存 proxyAddresses

一些环境包含 proxyAddresses,它是手动输入的,或者未由 Recipient Update Service 进行保存。在这些应用情境中,如果在未保存这些地址的情况下删除 Exchange 属性,便可能导致问题。若要保存 proxyAddresses,请执行如下操作。

保存 proxyAddresses

1.

运行 ADModify,然后单击修改属性

2.

从下拉列表中选择域控制器。

3.

添加用户并单击下一步

4.

单击自定义选项卡。在属性名中,输入 proxyAddresses,然后在属性值中,输入 null

上述过程将清空 proxyAddresses 属性,但是会首先将当前的所有 proxyAddresses 记录到 ADModify 的 .xml 日志文件中。如果已经记录到该文件中,则可以删除这些属性了。如果这些属性已被恢复,请在撤销模式下运行 ADModify 并选择先前列出的日志文件。撤销模式将利用日志文件中保存的数据替换当前的 proxyAddresses 集合。

 
阅读全文 | 回复(0) | 引用通告 | 编辑

发表评论:

    昵称:
    密码: (游客无须输入密码)
    主页:
    标题:

 
站点公告
站点日历
最新日志
最新评论
最新留言
友情链接
站点统计
日志搜索
用户登陆

 
Powered by Oblog.