Active Directory เป็นบริการที่น่าเชื่อถือ แต่ซับซ้อนและสำคัญ และการทำงานของเครือข่ายองค์กรทั้งหมดขึ้นอยู่กับมัน ผู้ดูแลระบบควรตรวจสอบอย่างสม่ำเสมอว่า Active Directory ทำงานอย่างถูกต้อง ในบทความนี้ เราจะกล่าวถึงวิธีหลักในการ ตรวจสอบและวินิจฉัยสุขภาพของ Active Directory domain, domain controllers และ replication
محتويات:
- วิธีตรวจสอบสุขภาพ AD Domain Controller ด้วย Dcdiag
- การตรวจสอบข้อผิดพลาด Active Directory Replication ระหว่าง DCs
วิธีตรวจสอบสุขภาพ AD Domain Controller ด้วย Dcdiag
Dcdiag เป็นเครื่องมือในตัวพื้นฐานสำหรับตรวจสอบสุขภาพ Active Directory domain controller เพื่อตรวจสอบสถานะของ AD domain controller อย่างรวดเร็ว ให้ใช้คำสั่งด้านล่าง:
dcdiag /s:DC01
คำสั่งรันการทดสอบต่างๆ ต่อ domain controller ที่ระบุและคืนค่าสถานะสำหรับแต่ละการทดสอบ (Passed/Failed)
การทดสอบทั่วไป:
- Connectivity – ตรวจสอบว่า DC ลงทะเบียนใน DNS, สร้างการเชื่อมต่อ LDAP และ RPC ทดสอบ
- Advertising – ตรวจสอบบทบาทและบริการที่เผยแพร่บน DC
- FRSEvent – ตรวจสอบว่ามีข้อผิดพลาดของ file replication service (SYSVOL replication errors) หรือไม่
- FSMOCheck – ตรวจสอบว่า DC สามารถเชื่อมต่อกับ KDC, PDC, และ Global Catalog server ได้หรือไม่
- MachineAccount — ตรวจสอบว่าบัญชี DC ลงทะเบียนใน AD อย่างถูกต้องและความสัมพันธ์เชื่อมโยงโดเมนถูกต้อง
- NetLogons – ตรวจสอบสิทธิ์ล็อกอินเพื่อให้ replication ดำเนินต่อไป
- Replications – ตรวจสอบสถานะ replication ระหว่าง domain controllers และว่ามีข้อผิดพลาดหรือไม่
- KnowsOfRoleHolders – ตรวจสอบความพร้อมใช้งานของ domain controllers ที่มี FSMO roles
- Services – ตรวจสอบว่าบริการบน domain controllers ทำงานอยู่
- Systemlog – ตรวจสอบว่ามีข้อผิดพลาดในล็อกของ DC หรือไม่
- Etc.

คุณสามารถหาคำอธิบายเต็มของการทดสอบ dcdiag ทั้งหมดที่นี่
นอกจากการทดสอบเริ่มต้นแล้ว คุณยังสามารถรันการตรวจสอบ domain controller เพิ่มเติมได้:
- Topology – ตรวจสอบว่า KCC สร้าง topology เต็มสำหรับ DCs ทั้งหมด
- CheckSecurityError
- CutoffServers – หา DC ที่ไม่ได้ replicate เนื่องจาก partner ไม่พร้อมใช้งาน
- DNS – มี DNS checks 6 แบบพร้อมใช้งาน (
/DnsBasic,/DnsForwarders,/DnsDelegation,/DnsDymanicUpdate,/DnsRecordRegistration,/DnsResolveExtName) - OutboundSecureChannels
- VerifyReplicas – ตรวจสอบว่า application partitions ถูก replicate อย่างถูกต้อง
- VerifyEnterpriseReferences
ตัวอย่างเช่น เพื่อตรวจสอบว่า DNS ทำงานอย่างถูกต้องบน domain controllers ทั้งหมด ให้ใช้คำสั่งต่อไปนี้:
dcdiag.exe /s:DC01 /test:dns /e /v

จะได้ตารางสรุปแสดงผลการทดสอบว่า DNS resolve ชื่อบน DCs ทั้งหมดอย่างไร (ถ้า OK คุณจะเห็น Pass ในทุกเซลล์) หากคุณเห็น Fail คุณต้องรันการทดสอบนี้ต่อ DC ที่ระบุ:
dcdiag.exe /s:DC01 /test:dns /DnsForwarders /v
เพื่อดูข้อมูลเพิ่มเติมจากผลการทดสอบ domain controller และบันทึกลงไฟล์ข้อความ ให้ใช้คำสั่งนี้:
dcdiag /s:DC01 /v >> c:\ps\dc01_dcdiag_test.log

คำสั่ง PowerShell ต่อไปนี้แสดงข้อมูลสรุปของการทดสอบ dcdiag ที่ดำเนินการ:
Dcdiag /s:DC01 | select-string -pattern '\. (.*) \b(passed|failed)\b test (.*)'

เพื่อดูสถานะของ domain controllers ทั้งหมด ใช้:
dcdiag.exe /s:woshub.com /a
หากคุณต้องการแสดงเฉพาะข้อผิดพลาดที่พบ ให้ใช้ตัวเลือก /q:
dcdiag.exe /s:dc01 /q

ในตัวอย่างของผม เครื่องมือตรวจพบข้อผิดพลาด replication บางอย่าง:
There are warning or error events within the last 24 hours after the SYSVOL has been shared. Failing SYSVOL replication problems may cause Group Policy problems. ......................... DC01 failed test DFSREvent
เพื่อให้ dcdiag แก้ไขข้อผิดพลาด Service Principal Names สำหรับบัญชี DC โดยอัตโนมัติ ให้ใช้ตัวเลือก /fix:
dcdiag.exe /s:dc01 /fix
การตรวจสอบข้อผิดพลาด Active Directory Replication ระหว่าง DCs
เครื่องมือในตัว repadmin ใช้สำหรับตรวจสอบ replication ในโดเมน Active Directory
นี่คือคำสั่งพื้นฐานสำหรับตรวจสอบ AD replication:
repadmin /replsum

เครื่องมือคืนค่าสถานะ replication ปัจจุบันระหว่าง DCs ทั้งหมด ในอุดมคติ ค่า largest delta ควรน้อยกว่า 1 ชั่วโมง (ขึ้นอยู่กับ AD topology และการตั้งค่าความถี่ intersite replication) และจำนวนข้อผิดพลาด = 0 ในตัวอย่างของผม คุณเห็นว่าการ replicate ล่าสุดใช้เวลา 14 วัน แต่ตอนนี้ OK แล้ว
เพื่อตรวจสอบ replication สำหรับ DCs ทั้งหมดในโดเมน:
repadmin /replsum *
เพื่อทดสอบ intersite replication:
repadmin /showism
เพื่อดู replication topology และข้อผิดพลาด (ถ้ามี) ให้รันคำสั่งนี้:
repadmin /showrepl
คำสั่งจะตรวจสอบ DCs และคืนค่าเวลาและวันที่ของการ replicate สำเร็จล่าสุดสำหรับแต่ละ directory partition (last attempt xxxx was successful)

เพื่อแสดงข้อมูล replication เพิ่มเติม ใช้คำสั่งนี้:
repadmin /showrepl *
เพื่อรัน password replication จาก writable domain controller ไปยัง read-only domain controller (RODC) ใช้ตัวเลือก /rodcpwdrepl
ตัวเลือก /replicate เริ่มการ replicate ของ directory partition ที่ระบุไปยัง DC เฉพาะทันที
เพื่อซิงโครไนซ์ DC ที่ระบุกับ replication partners ทั้งหมด ใช้คำสั่งด้านล่าง:
replmon /syncall <nameDC>
เพื่อดู replication queue:
repadmin /queue
ในอุดมคติ replication queue ควรว่างเปล่า

ตรวจสอบว่าการสำรองข้อมูลล่าสุดของ domain controller ปัจจุบันถูกสร้างเมื่อไหร่:
Repadmin /showbackup *
คุณยังสามารถตรวจสอบสถานะ replication โดยใช้ PowerShell ตัวอย่างเช่น คำสั่งต่อไปนี้จะแสดงข้อผิดพลาด replication ทั้งหมดที่พบในตาราง Out-GridView:
Get-ADReplicationPartnerMetadata -Target * -Partition * | Select-Object Server,Partition,Partner,ConsecutiveReplicationFailures,LastReplicationSuccess,LastRepicationResult | Out-GridView

ผมอัปโหลดสคริปต์ PowerShell ที่ผมใช้บ่อยในการตรวจสอบสถานะ replication ใน AD ไปที่ GitHub repository ของผม สคริปต์สร้างไฟล์ HTML และสามารถส่งอีเมลได้โดยใช้คอมมานด์เลต Send-MailMessage
https://github.com/maxbakhub/winposh/blob/main/ADHealthCheck.ps1

คุณยังสามารถตรวจสอบสถานะของบริการ ADDS พื้นฐานบน domain controller โดยใช้คอมมานด์เลต Get-Service:
- Active Directory Domain Services (
ntds) - Active Directory Web Services (
adws) – คอมมานด์เลตทั้งหมดจาก AD PowerShell module เชื่อมต่อกับบริการนี้ - DNS (
dnscacheและdns) - Kerberos Key Distribution Center (
kdc) - Windows Time Service (
w32time) - NetLogon (
netlogon)
Get-Service -name ntds,adws,dns,dnscache,kdc,w32time,netlogon -ComputerName dc01

ดังนั้น ในบทความนี้ เราได้แสดงเครื่องมือ คำสั่ง และสคริปต์ PowerShell พื้นฐานที่คุณสามารถใช้วินิจฉัยสุขภาพของ Active Directory domain ของคุณ คุณสามารถใช้พวกมันใน Windows Server versions ที่รองรับทั้งหมด รวมถึง domain controllers ที่รันในโหมด Server Core