一.功能介绍
Dcdiag.exe是域控制器诊断工具,在讲解这个工具之前,必须先进行若干概念的诠释. 1.域:简单地说,网络就是由域所组成的,是数据安全集中管理的单位,具有唯一的名字,域可在活动目录中定义安全边界。域原是在windows NT中出现的,到CW2KP仍被继承下来.2.目录林(有些资料上干脆称为森林):看名字就知道,这是许多目录的集合体.确切含义请参考有关资料.
如所周知,windows2000对网络功能进行了很多加强,本诊断工具仅在网络环境下才能使用,单机环境不可能遇到的域控制器.也就遑论对域控制器进行诊断了.Dcdiag可以分析目录林或"组织"中的域控制器状态,并生成一个报告,报告将所有通过诊断测试得到的问题汇集在自身中,当管理人员或技术支持人员分析问题和排除故障时候,依此作为判断的参考资料. DcDiag本身可以向终端用户报告问题,在程序中,已经封装有详细的、关于如何识别系统不正常状态的功能和相关知识。
如果将DcDiag理解为一个框架的话,那么,这个框架就是由(对系统的)一系列测试和校验构成的.当然,既然是测试,这些测试就必须以一定的顺序进行.程序依照用户的选择来进行域控制器的诊断测试,从范围上说,测试可以是针对组织单位、站点或者是单一服务器的某些项,也可以针对所有项目进行完整的测试.从执行方法上说,测试既可以指定某一项目,也可以跳过某些无必要的项目.通常应有下列项目:
· 连通性
· 复制
· 拓补完整性
· 检查 NC Head 安全描述符
· 检查登录权
· 取得域控制器位置
· 安全边界
· 检查任务或脚色.
· 信任关系的验证.
在以前介绍的NetDiag连通测试工具中也有关于信任关系验证的项目.(可以参考本人上一篇"连通测试工具中的介绍")
二.使用语法:
dcdiag /s:DomainController [/n:NamingContext] [/u:Domain\Username /p:{* | Password | ""}] [{/a | /e}] [{/q | /v}] [/i] [/f:LogFile] [/ferr:ErrLog] [/c [/skip:Test]] [/test:Test] [{/h | /?}]
参数含义及说明:
/s:DomainController
域控制器使用的主服务器,这是一个必须的参数,不可省去。
/n:NamingContext
指定测试的时候关联的系统,域可以指定NetBIOS、DNS或别的系统。
/u:Domain\Username /p:{* | Password | ""}
使用”域/用户名”所附的信任凭证时的提示符号,其实就是密码的显示符号,例如,我们在键入密码时,通常显示的并不是密码本身,而是*****符号.也有使用....作为显示符号的.
/a
测试网站的所有的服务器。
/e
在整个规划中测试所有的服务器,并忽略选项/a
/q
在空闲的时间内打印错误信息报告。
/v
打印详细的信息报告.
/i
忽略多余的错误信息。
/f:LogFile
将所有的信息报告改为输出到由LogFile命名的登记文件中,也就是不再将信息报告输出到系统默认的登记文件。
/ferr:ErrLog
将致命的错误信息改为输出到由ErrLog.命名的、单独的登记文件中,与上一条类似.
/c
运行所有测试项目,包括非默认的测试.当然如果已经确定某些项目无需测试,可以使用/skip 开关来指定哪些测试可以跳过。所谓非默认的测试是指下列几项:
拓补
对方服务器是否关闭服务器
安全通道输出范围.
skip:Test
用skip开关指出要跳过不测的项目,必须在使用/c(选择完全测试)的时候才能用这个来配合 ,并且注意在命令行中不能出现互相矛盾的选择项。
/test:Test
只运行单一测试,但连通测试不可跳过, 并且在命令行中注意不能出现互相矛盾的选择.
不论指定进行哪些测试,或要指定跳过哪些测试,都必须使用以下的名字:
Connectivity 连通性
测试域控制器是否在DNS(域名解析服务系统)已经登记注册、或通过Ping测试,并已经具备LDAP/RPC的连用性..
Replications复制
检查域控制器之间的复制.
Topology 拓补
检查全部域控制器的所有链结的拓补(结构)
CutoffServers
检查服务器因对方服务器关闭而还没有接受到的复制
NCSecDesc
以名子为关联信息检查安全描述符
NetLogons
检查登陆权限是否适当,如果适当则允许复制继续进行
LocatorGetDc
检查每个域控制器是否有可以关闭的广告.
Intersite
检查临时位际的复制
RolesHeld
检查已知的全局"任务占有者(role-holders)"、可能的位置及其响应.
RidManager
检测RID是否可访问以及相关信息的正确性.
MachineAccount
检查计算机账号信息.
Services
检测域控制器服务的运行
OutboundSecureChannels
从所指定的域中检查安全通道
ObjectsReplicated
检查计算机账号和DSA 对象的复制
{/h | /?} 显示帮助信息.
三.验证及发现的问题
这个工具只能运行于在命令行中.仿照以前介绍的命令行窗口的打开方法,打开该窗口后,在提示符后面键入:dcdiag/?或dcdiag/h ,可以显示帮助信息.大概是这个工具的项目太多吧!显示出来的帮助信息很长,对工具中的每个测试项目的使用方法,都有很详细的介绍.如果想仔细研究,建议把这些信息保存到一个文件中,便于以后仔细研究.要保存这些帮助信息,可以在命令行窗口中显示出完整的帮助信息后,鼠标移动至屏幕下面"托盘"中命令行窗口的图标上后,点击右键,会出现一个菜单,其中有"编辑"一项,再将鼠标移动至"编辑",自动会显示出下一层菜单,先点击"全选"、后点击"复制",就可以将其粘贴到记事本等窗口中保存起来.
从显示的信息看,其内容与上面(第二部分)介绍的有不少出入.同是一个工具,其专门的帮助文档和用/?得出的帮助信息不一样,在Support Tools中已经不是第一次遇到,其中原因我始终没有搞清楚.经对照发现,以下项目就是帮助文档中没有的:
/fix: 安全修复
frssysvol - 这个测试用来检查文件(以及系统卷)复制系统是否准备就绪.
kccevent - 这个测试用来检查外部Com端口的兼容(或冲突)方面的问题
systemlog - 这个测试用来检查系统运行的外部错误
以上信息是我截取命令行窗口中的提示信息后,与帮助文档对照后发现的.同时,也发现某些项目在帮助文档中有介绍,但在提示信息中却没有.对于工具中的测试项目,我考虑到时间和条件,仅仅进行了很少部分的验证,正常运行是没问题的.