ค้นพบการสำรองข้อมูล Domain Controller ก่อนที่จะบูม
ทุกคนยอมรับว่าการสำรองข้อมูลตัวควบคุมโดเมนมีความสำคัญ แม้แต่บริการหลักหลายรายการเช่น Active Directory ก็ควรได้รับการสำรองข้อมูลเป็นประจำ แม้ว่าคุณจะมีสำเนาของฐานข้อมูล Active Directory และ SYSVOL บนเซิร์ฟเวอร์ต่างๆ ที่กระจายอยู่ทั่วโลก แต่ก็ไม่ได้หมายความว่าคุณควรเพิกเฉยต่อการสำรองข้อมูล ขึ้นอยู่กับช่วงเวลาการจำลอง การเปลี่ยนแปลงที่ผิดพลาดประการหนึ่งสามารถแพร่กระจายไปทั่วทั้งสภาพแวดล้อม Active Directory ของคุณได้อย่างรวดเร็ว!
ทำความเข้าใจวิธีการทำงานของการสำรองข้อมูลตัวควบคุมโดเมน
คุณจะทราบได้อย่างไรว่า Active Directory ได้รับการ "สำรองข้อมูล" แล้วหรือยัง?
เนื่องจากในทางเทคนิคแล้ว Active Directory มีอยู่ในเซิร์ฟเวอร์จำนวนมาก (ตัวควบคุมโดเมน) คุณจึงสามารถสำรองฐานข้อมูล Active Directory บนตัวควบคุมโดเมนทุกตัวได้ คุณยังสามารถรับบริบทหรือพาร์ติชันการตั้งชื่อแต่ละรายการที่ละเอียดและสำรองข้อมูลได้มากขึ้นอีกด้วย
ทุกครั้งที่สำรองข้อมูลพาร์ติชันบนตัวควบคุมโดเมน เหตุการณ์จะถูกบันทึกใน DC การใช้โปรแกรมอรรถประโยชน์ repadmin ช่วยให้คุณสามารถสอบถามวันที่นี้ได้
Repadmin เป็นโปรแกรมอรรถประโยชน์ที่สร้างไว้ใน Windows Server 2008 และสูงกว่าบน DC และใช้เพื่อทำหน้าที่การจัดการต่างๆ มากมายรอบๆ Active Directory หนึ่งในฟังก์ชันของ repadmin คือการค้นหาเวลาสำรองข้อมูลล่าสุดของแต่ละพาร์ติชันในฐานข้อมูล Active Directory
คุณสามารถดูได้ว่าคุณเรียกใช้ repadmin.exe /showbackup หรือไม่ โดยจะสอบถามเวลาการสำรองข้อมูลสำหรับแต่ละพาร์ติชันบน localhost ในกรณีนี้ ฉันรันมันบนตัวควบคุมโดเมนโดยตรง อย่างไรก็ตาม คุณไม่จำเป็นต้องทำเช่นนี้ จะเป็นประโยชน์มากกว่าหากได้รับข้อมูลนี้จากตัวควบคุมโดเมนทั้งหมดในฟอเรสต์ทั้งหมดเพื่อให้เห็นภาพสถานะการสำรองข้อมูลของตัวควบคุมโดเมนของคุณที่ใหญ่ขึ้น
ในการดำเนินการนี้ เราจะต้องได้รับความช่วยเหลือจาก Windows PowerShell และโมดูล Active Directory
โมดูล Active Directory มี cmdlet ที่มีประโยชน์ที่เรียกว่า Get-ADForest ที่จะระบุโดเมนทั้งหมดที่มีอยู่ในฟอเรสต์ได้อย่างง่ายดาย หนึ่งในคุณสมบัติที่เอาต์พุต Get-ADForest เรียกว่า Domains
PS51> $domains = (Get-ADForest).Domainsตอนนี้เรามีรายการโดเมนในฟอเรสต์แล้ว ต่อไป เราจะต้องค้นหาตัวควบคุมโดเมนทั้งหมดในแต่ละโดเมนเหล่านั้น เมื่อต้องการทำเช่นนี้ เราสามารถใช้ cmdlet Get-ADDomainController
$domainControllers = ($domains | foreach { Get-ADDomainController-Server $_ -Filter * }).HostNameต่อไป เราจะส่งตัวควบคุมโดเมนแต่ละตัวเหล่านี้ไปยังยูทิลิตี repadmin เพื่อค้นหาเวลาการสำรองข้อมูลล่าสุดสำหรับแต่ละพาร์ติชัน Active Directory บนตัวควบคุมโดเมนแต่ละตัว
PS51> $backups = $domainControllers | foreach { repadmin.exe /server $_ }สิ่งนี้จะทำให้เราได้ผลลัพธ์คร่าวๆ ของวันที่สำรองข้อมูลตัวควบคุมโดเมนของแต่ละพาร์ติชันบนตัวควบคุมโดเมนแต่ละตัวในโดเมนทั้งหมดในฟอเรสต์ปัจจุบันของเรา
อย่างไรก็ตาม อย่างที่คุณเห็นจากเอาต์พุต repadmin /showbackup ผลลัพธ์ที่ได้ไม่สวยนักและอาจอ่านยาก สำหรับสิ่งนี้ ฉันจะใช้ความสามารถในการแยกวิเคราะห์สตริงของ PowerShell และนิพจน์ทั่วไปบางส่วนเพื่อให้ได้ผลลัพธ์ที่ดูดีกว่ามาก
## Loop through each domain controller
$domainControllers | foreach {
$backups = repadmin.exe /showbackup $_
## Capture the output ofrepadmin
$output = @{ 'DomainController' = $_ }
## Start collectingproperties for output
for ($i = 0; $i -lt $backups.Count; $i++) { ## Begin looking atrepadmin output
if ($backups[$i] -match '^(CN|DC)') { ## If the line has apartition.
## Assign the partition name and the date/time to the output hashtable
## and send $output with the DomainController, Partition and DateTime
$output.Partition = $backups[$i]
$output.DateTime = [regex]::Match($backups[$i +2],'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})').Groups[1].Value
[pscustomobject]$output
}
}
}นี่จะทำให้คุณได้รับรายงานการสำรองข้อมูลตัวควบคุมโดเมนที่ดูดีขึ้นมาก
สรุป
การใช้ยูทิลิตีบรรทัดคำสั่ง repadmin และ PowerShell-fu เล็กน้อย คุณจะพบเวลาล่าสุดที่ตัวควบคุมโดเมนของคุณได้รับการสำรองข้อมูล ทั้งหมดนี้ส่งคืนให้คุณในการออกแบบเชิงวัตถุที่มีการจัดรูปแบบอย่างสวยงามด้วย PowerShell