使用Powershell检查域控制器健康状态的DCDiag

DCDiag: 如何使用 Powershell 檢查網域控制器健康狀況。 DCDiag 是一個強大的命令列工具,用於診斷 Microsoft Windows Active Directory 環境中的 網域控制器 問題。我們使用它來檢查網域控制器的 健康 狀況,識別錯誤或不一致之處,並排除複製問題。DCDiag 還幫助管理員檢測並解決 DNS 配置、 SYSVOL 複製和其他 Active Directory 正確運行所需的關鍵服務的問題。

我們檢查 DCDiag,一個強大的 Microsoft Windows 工具。我們使用它來測試 DNS 服務,評估網域控制器的健康狀況,甚至自動更正錯誤。雖然相對簡單,但該工具足以維護我們所有網域控制器的健康。我們是否開始閱讀文章 DCDiag: 如何使用 Powershell 檢查網域控制器健康狀況?另請參閱 如何將網域控制器添加到現有網域

我們是否應該從文章《DCDiag:如何使用Powershell檢查域控制器健康狀況》開始?

DCDiag:如何使用Powershell檢查域控制器健康狀況

安裝DCDiag工具

如果我們運行的是Windows Server,我們應該已經安裝了DCDiag。微軟將DCDiag集成到了從2012R2及以後版本的現代Windows Server中。

DCDiag工具的目的

DCDiag の目的は、ドメイン コントローラーの問題を診断およびトラブルシューティングすることです。これは、Windows Server 環境内のドメイン コントローラーに対して幅広いヘルス チェックを実行するコマンド ライン ツールです。これには、DNSレプリケーションLDAP のテストが含まれ、セキュリティを分析し、シングルまたは複数の DC を同時に AD フォレストまたはエンタープライズ内で実行します。ドメイン コントローラーに対して DCDiag が実行するさまざまなテストのいくつかを見てみましょう。

  1. 接続テスト – DCDiag は、ドメイン コントローラーが ネットワーク に接続されており、他のドメイン コントローラーと通信できるかどうかを確認します。
  2. DNS 測試 – 檢查網域控制器是否正確解析並註冊 DNS
  3. 複寫測試– 測試網域控制器是否準確地與其他網域控制器進行複寫。
  4. 信任測試– DCDiag 檢查網域控制器是否信任其他網域,以及其他網域是否信任該網域控制器。
  5. LDAP 測試– 檢查LDAP 查詢是否在網域控制器上正常運作。
  6. Kerberos 測試– DCDiag 檢查 Kerberos 驗證是否在網域控制器上正確運作。
  7. SYSVOL 測試 – DCDiag 檢查 SYSVOL 在網域控制器上的複寫是否正確運作。
  8. 全域目錄測試 – DCDiag 檢查 DC 是否作為 全域目錄 伺服器運作,以及全域目錄查詢是否正確運作。

DCDiag 工具概述

好了,關於文章DCDiag:如何使用PowerShell檢查網域控制器健康狀況是一個簡單的命令行工具。我們在CMD提示符PowerShell窗口中運行DCDiag。請記住使用管理員權限。

DCDiag的基本語法如下:

dcdiag.exe /s:[:] [/u:\ /p:*||””]

其中:

  • /s – 網域控制器
  • /u:\ – 用戶名
  • \p:* – 密碼

這個基本的命令行返回測試結果,顯示網域控制器的主要(連接性)測試和任何指定的測試。要學習如何使用DCDiag命令以及所有其開關,讓我們從幫助命令開始:

dcdiag /?

DCDiag開關參數

要使用以下任何開關,請將其附加在 DCDiag 命令之後。常用命令開關的摘要:

  1. /s <ServerName> – 指定要測試的服務器的名稱。如果未指定服務器名稱,DCDiag 將測試本地計算機
  2. /v – 提供詳細輸出和有關執行的測試的更多信息。
  3. /test:<TestName> – 指定要運行的測試的名稱。我們通過指定多個 /test 開關來運行多個測試。
  4. /e – 對指定的 域控制器 執行全面的測試集。
  5. /fix – 試圖修復在測試過程中發現的任何問題。
  6. /f:<LogFileName> – 指定要創建的 日誌 文件的名稱。
  7. /c – 指定 DCDiag 應該只執行廣告域控制器服務所需的測試。
  8. /skip:<TestName> – 略過指定的測試。
  9. /l:<LogFileName> – 指定要附加的日誌文件名稱,而不是覆蓋。
  10. /q – 指定靜默模式,該模式會抑制顯示信息性消息。
  11. /test:DNS – 在指定的域控制器上運行DNS測試。
  12. /test:KCC – 在指定的域控制器上運行KCC測試。
  13. /test:Replications – 在指定的dc上運行複製測試。
  14. /test:Advertising – 在指定的dc上運行廣告測試。
  15. /test:Services – 在指定的dc上運行服務測試。

上述是一些最常用的DCDiag命令行開關,但還有更多選項可供使用。我們可以通過運行help command來查看完整的開關列表及其定義。

試用我們的Active Directory健康DC報告工具

試試我們,享受免費,訪問所有功能。- 200多個AD報告模板可供使用。輕鬆自定義您自己的AD報告。




運行DCDiag和使用案例

要運行DCDiag,只需輸入不帶任何開關的DCDiag命令,即可對本地DC進行基本的DCDiag測試(或參數)。

dcdiag.exe

由於DCDiag自動識別當前(本地)DC,因此不需要域控制器或管理憑證。在下面的部分中,我們將討論使用DCDiag的開關參數的多個使用案例。

遠程DC健康檢查

我們必須在DC的名稱及其憑證末端添加/s:開關,以對遠端DC(用戶名和密碼)執行診斷。例如:

dcdiag.exe /s:dc01 /u:dc01\Administrator /p:password

DNS中本地執行的DCPromo和註冊,並非針對域控制器,將不受/s開關的影響。

請注意,當我們輸入/u(用戶名)信息時,必須指定具有域管理員權限的帳戶名稱,並使用正確的格式:域/用戶名。因此,例如,我們將用戶名(Administrator)與域名(dc01)結合:/u:dc01\Administrator

檢查所有DC的健康狀況

我們將每個AD站點互連,這些站點可能包含一組DC。如果我們將AD劃分為站點,則使用/a交換機是有益的。它允許我們同時為所有站點DC運行DCDiag實用程序:

dcdiag.exe /s:dc01 /a

使用DCDiag測試DNS

無論我們測試什麼,DCDiag工具在默認情況下始終會檢查每個域控制器的DNS註冊在主要連接性測試期間。此外,我們可能會進行特定的DNS測試,例如轉發器,註冊記錄和其他,所有這些都有助於調查DNS問題。要測試DNS,請使用以下命令:

dcdiag.exe /s:dc01 /test:dns

以下是默認運行的基本測試,除了外部名稱解析。所有DNS結果都顯示DNSBasic測試。如果沒有值,則/test:dns開關默認為 /DNSall。以下是使用DCDiag工具時調用的一些特定於DNS的測試:

  1. /DNSBasic – 檢查網域控制器的DNS伺服器是否正確配置並解析名稱。
  2. /DnsDelegation – 測試DNS委派是否正確配置給網域控制器
  3. /DnsForwarders – 檢查DNS轉發器是否正確配置給網域控制器。
  4. /DnsDynamicUpdate – 檢查網域控制器是否執行DNS動態更新。
  5. /DnsRecordRegistration – 測試網域控制器的DNS註冊是否是最新的且準確的。

這些測試確保網域控制器的DNS設定正確且正常運作。如果DCDiag在這些測試中發現任何問題,DCDiag會迅速解決這些問題,以避免Active Directory和其他網路服務可能出現的問題。DNS測試應該像這樣:

自訂DCDiag結果

DCDiag允許我們自訂結果,顯示較少或較多的資訊。也可以將結果匯出以供日後分析。以下是一些我們如何自訂DCDiag報告的範例。

以靜音模式運行DCDiag

靜音/q開關非常方便,通過僅顯示錯誤訊息列表來減少輸出大小。以下是DCDiag在靜音模式的範例:

dcdiag.exe /s:dc01 /q

使用/q的輸出僅過濾到錯誤,看起來像這樣:

使用詳細輸出運行 DCDiag

通過添加/v詳細標誌,運行具有詳細輸出的 DCDiag。它為我們提供有關日常任務的更多信息,例如錯誤、警告、信息性消息等。/v開關是安靜/q開關的相反。

如前所述,DCDiag(沒有/v)提供了足夠的細節來識別和解決我們域控制器的任何問題,這在大多數情況下可能足夠了。這裡是一個帶有詳細開關的片段示例:

dcdiag.exe /s:dc01 /v

帶有/v開關的輸出應該看起來像這樣:

我們只建議在標準摘要表中看到警告或錯誤並希望更詳細地調查問題時使用詳細輸出。

導出 DCDiag 結果

DCDiag 實用工具允許我們導出健康檢查結果。例如,我們通過將/f開關附加到 DCDiag 命令來將所有測試結果保存到文本文件中。例如:

dcdiag.exe /s:dc01 f:c:\dcdiag_dc01_test01.txt

請注意,我們可以自訂日誌檔的名稱並將其儲存在任何特定的資料夾中。我們可以在記事本或任何支援.txt檔案的程式中開啟結果。

我們也可以將結果匯出到XLSXXML格式。然而,此功能僅適用於/test:dns開關:

dcdiag.exe /test:dns /x or, /test:dns/x:

DCDiag僅是一種診斷工具。因此,它執行不同的測試並僅提供其發現的結果。然而,/fix開關是一個很好的開關,它試圖安全地修復所述的問題。

dcdiag.exe /s:dc01 /fix

在使用 /fix開關時,我們不需要提供更多的參數或特性。對於MachineAccount測試,只有 /f開關是有效的。它修復了DC的MachineAccount物件的服務主體名稱(SPNs)。

注意:儘管DCDiag設計了(fix)開關以進行安全自動修復,但它仍然會更改網域控制器。因此,在使用/f開關之前,請先檢查測試結果,並始終建立網域控制器的備份

使用PowerShell的DCDiag

Windows PowerShell中沒有DCDiag的對應工具。不過,我們可以通過運行dcdiag.exe命令並使用適當的參數,使用Invoke-ExpressionInvoke-Command cmdlet在PowerShell中使用DCDiag。以下是在PowerShell中使用DCDiag運行DNS測試的示例:

Invoke-Expression "dcdiag.exe /test:DNS /v"

在此示例中,我們使用Invoke-Expression cmdlet運行dcdiag.exe命令,並使用/test:DNS參數運行DNS測試,以及/v參數提供詳細輸出。當然,我們可以將/test:DNS替換為我們想要運行的任何其他DCDiag測試。或者,我們可以使用Invoke-Command cmdlet在遠程計算機上運行DCDiag。

以下是另一個示例:

Invoke-Command -ComputerName "ServerName" -ScriptBlock { dcdiag.exe /test:DNS /v }

在先前的範例中,我們使用 -ScriptBlock參數與 Invoke-Command來指定我們想要在遠端電腦上運行的代碼。-ScriptBlock參數接受一個腳本塊,基本上是一個包含在大括號 {}中的代碼塊。

當我們使用 Invoke-Command-ScriptBlock參數時,我們在由-ComputerName參數指定的遠端電腦上執行腳本塊,並將腳本塊的輸出返回給本地電腦。使用-ScriptBlock參數與Invoke-Command是在遠端電腦上執行命令或腳本的強大方式。它有助於在網絡環境中管理大量電腦,就像我們使用DCDiag工具一樣。

感謝您閱讀DCDiag:如何使用Powershell檢查域控制器健康狀況。我們現在將結束這篇文章。

DCDiag:如何使用Powershell檢查域控制器健康狀況結論

總結起來,DCDiag是管理Active Directory環境的管理員們必備的工具。提供了對域控制器進行全面健康檢查的套件,幫助管理員輕鬆診斷和解決問題。DCDiag能夠執行與DNS、複寫、LDAP、安全性等相關的詳細測試,使其成為確保域控制器和Active Directory環境的健康和穩定的寶貴工具。

通過將DCDiag納入定期維護和監控例程,管理員有助於防止更嚴重的問題發生,確保其Active Directory環境保持安全和可靠。

Source:
https://infrasos.com/dcdiag-how-to-check-domain-controller-health-using-powershell/