一.功能介紹
Dcdiag.exe是域控制器診斷工具,在講解這個工具之前,必須先進行若干概念的诠釋. 1.域:簡單地說,網絡就是由域所組成的,是數據安全集中管理的單位,具有唯一的名字,域可在活動目錄中定義安全邊界。域原是在windows NT中出現的,到CW2KP仍被繼承下來. 2.目錄林(有些資料上干脆稱為森林):看名字就知道,這是許多目錄的集合體.確切含義請參考有關資料.
如所周知,windows2000對網絡功能進行了很多加強,本診斷工具僅在網絡環境下才能使用,單機環境不可能遇到的域控制器.也就遑論對域控制器進行診斷了.Dcdiag可以分析目錄林或"組織"中的域控制器狀態,並生成一個報告,報告將所有通過診斷測試得到的問題匯集在自身中,當管理人員或技術支持人員分析問題和排除故障時候,依此作為判斷的參考資料. DcDiag本身可以向終端用戶報告問題,在程序中,已經封裝有詳細的、關於如何識別系統不正常狀態的功能和相關知識。
如果將DcDiag理解為一個框架的話,那麼,這個框架就是由(對系統的)一系列測試和校驗構成的.當然,既然是測試,這些測試就必須以一定的順序進行.程序依照用戶的選擇來進行域控制器的診斷測試,從范圍上說,測試可以是針對組織單位、站點或者是單一服務器的某些項,也可以針對所有項目進行完整的測試.從執行方法上說,測試既可以指定某一項目,也可以跳過某些無必要的項目.通常應有下列項目:
· 連通性
· 復制
· 拓補完整性
· 檢查 NC Head 安全描述符
· 檢查登錄權
· 取得域控制器位置
· 安全邊界
· 檢查任務或腳色.
· 信任關系的驗證.
在以前介紹的NetDiag連通測試工具中也有關於信任關系驗證的項目.(可以參考本人上一篇"連通測試工具中的介紹")
二.使用語法:
dcdiag /s:DomainController [/n:NamingContext] [/u:DomainUsername /p:{* | Password | ""}] [{/a | /e}] [{/q | /v}] [/i] [/f:LogFile] [/ferr:ErrLog] [/c [/skip:Test]] [/test:Test] [{/h | /?}]
參數含義及說明:
/s:DomainController
域控制器使用的主服務器,這是一個必須的參數,不可省去。
/n:NamingContext
指定測試的時候關聯的系統,域可以指定NetBIOS、DNS或別的系統。
/u:DomainUsername /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 - 這個測試用來檢查系統運行的外部錯誤
以上信息是我截取命令行窗口中的提示信息後,與幫助文檔對照後發現的.同時,也發現某些項目在幫助文檔中有介紹,但在提示信息中卻沒有.對於工具中的測試項目,我考慮到時間和條件,僅僅進行了很少部分的驗證,正常運行是沒問題的.